问题标签 [java-threads]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
43 浏览

java - 当我轮询数据时,图形 GUI 冻结并且不加载

我正在创建一个实时图形应用程序,使用我偶然发现的一个名为“LiveGraph”的库。从本质上讲,LiveGraph 应用程序是一个 GUI,它不断地从包含数据的文本文件中读取数据,并更新相应的图形。

这是我拥有的代码片段(解释如下:

第一个 for 循环本质上是遍历图表列表并为每个图表加载 GUI。之后的 while 循环本质上是通过网络永远轮询数据。

现在是这样的场景:当我只显示图表时(即,如果我注释掉 while 循环),图表会显示并打开(但显然不显示任何内容,因为没有任何轮询)。但是,使用如下所示的所有代码,图形的 GUI 窗口打开,但完全是灰色的,没有内容。如果我尝试以任何方式调整它们的大小或与它们交互,应用程序就会冻结,我必须强制退出。

我将其范围缩小到线程在某种程度上是一个问题的问题。while-loop 将永远运行,并且可能 GUI 将因此无法正常运行。我正在寻找解决方案,可能涉及线程。我尝试了一些基本的事情,例如运行显示并将每个作为单独的线程轮询,但我无处可去。

0 投票
4 回答
1172 浏览

android - 如何在不崩溃的情况下中断线程 onBackPressed?

我尝试覆盖 onBackPressed 以不仅完成当前活动,而且在我调用下一个活动的意图时中断线程。当我之前按下时,启动活动完成,但线程继续运行并将意图调用到下一个活动。现在我已经在BackPressed 上包含了线程中断,当我按下返回时应用程序崩溃了。我究竟做错了什么?

更新:(这个解决方案对我有用)。

0 投票
1 回答
107 浏览

java - SWT - asyncExec 将输出定向到列表小部件

我正在尝试使用 Display.asyncExec() 方法在生成时将状态更新打印到 SWT 列表小部件,而不是在程序完成时将更新转储到列表中。我不断收到 java.lang.NullPointerException。我无法弄清楚我做错了什么。该程序运行良好,直到我尝试使用单独的线程并使用 Display.asyncExec 方法。任何建议表示赞赏。

错误:“异常:从线程“Thread-0”中的 UncaughtExceptionHandler 抛出的 java.lang.NullPointerException

我的 CustomOutputStream 类:

在我的 DVS 课程中:

在我的主要课程中:

0 投票
1 回答
685 浏览

android - IllegalThreadStateException:线程已经在新线程上启动

我正在使用 HockeyApp 来捕获内部测试人员的崩溃问题,并且带有此跟踪的单个崩溃报告进来了:

在查看 SO 之后,问题似乎是线程完成后代码正在调用 onStart() 。但是,我的服务中唯一调用 onStart() 的代码如下。请注意,它是在创建新线程后启动的。这种情况只发生过一次,所以我不确定是否有任何重现步骤,但我很好奇是否有其他人知道可能导致这种情况的原因。

第 256-260 行(在第 258 行崩溃)

0 投票
1 回答
56 浏览

java - AsyncTaks 的受控执行

我有一个创建多个 AsyncTasks 的 for 循环。大量data存在的数组和 for 循环处理每个数据并使用该数据调用执行程序。AsyncTask 对该数据进行了一些密集处理,并且此代码对于小型数据集非常有效,即数据数组足够小,不会创建太多线程。

然而,碰巧数据量很大,因此在生产环境中运行,即在实际的 Android 设备上运行,应用程序由于线程过多而导致 RejectedExecutionException 崩溃。此外,还有一个 UI 表单,用户可以通过该表单提供数据并手动调用相同的 SomeAsyncDataTaskAsyncTask类。

我正在寻找一种解决方案,通过该解决方案我可以通过限制一次运行 5 个 AsyncTask 来控制此执行,并且必须将任何其他任务排队。此外,当用户发送任务时,如果队列有任何未运行的排队任务,我更愿意将此用户任务放在顶部,以便当正在运行的任务完成时,此任务有机会运行而其他任务仅出现之后。谷歌搜索显示了一些结果;就像有一个叫做 PriorityBlockingQueue 的东西,但是看着代码让我很困惑。这是一个解决方案吗?如果是这样,如何在这种情况下使用它(对于上面的代码)。请提出解决方案-谢谢!

0 投票
1 回答
304 浏览

java - OCJP 转储线程同步方法

嗨,我正在处理 SCJP 转储,但现在我遇到了问题。这是问题:

哪个论述是对的?

A. 这段代码可以抛出一个 InterruptedException

B. 这段代码可以抛出一个非法的MonitorStateException

C. 这段代码可以在十分钟后抛出 TimeoutException

D. 颠倒 obj.wait() 和 obj.notify() 的顺序可能会导致该方法正常完成

E. 从另一个线程调用 notify() 或 notifyAll() 可能会导致该方法正常完成

F. 除非将“obj.wait()”替换为“((Thread) obj).wait()”,否则此代码不会编译

我发现在一个转储文件中答案是 A,而在另一个转储文件中答案是 B。任何人都可以得到正确答案并为我提供解释吗?

0 投票
1 回答
307 浏览

java - OCJP 转储线程

谁能帮我解决以下问题?

A. 4

B. 5

C. 8

D. 9

E. 编译失败

F. 运行时抛出异常

G. 无法确定

在转储中,答案是 D。我知道在 new Starter().makeItSo 中创建了一个新线程。但是谁能告诉我为什么 run() 中的 x*=2 在方法 makeItSo 中的 x=x-1 和 System.out.println(x) 之间执行?

0 投票
3 回答
1952 浏览

java - 简单的 Ping Pong Java 线程

我正在尝试制作 2 个线程,一个 Ping 和一个 Pong。这个想法是 Ping 应该总是首先执行。我正在使用同步方法。我不确定我的代码有什么问题。在我看来它应该可以工作。我已经阅读了很多文档。因此,如果您有任何您认为会有所帮助的内容,我将很乐意阅读。我确定这很简单。任何帮助表示赞赏

每个结果都是不同的,但奇怪的是我得到了重复。

0 投票
1 回答
53 浏览

java - 转换为 ExecutorService

我有一个消费者/生产者计划,其中:

  • 要处理的项目(字符串)进入 BlockingQueue
  • 我从该 BlockingQueue 实例化执行 take() 的固定数量的线程,然后处理这些字符串。

处理线程是此类的实例:

转换为 Executor 将非常简单:字符串将与 Runnable 一起直接进入 Executor:

接着:

但是......每次我实例化一个任务时,它都会实例化一个非常大的代码块(处理器)——我不能这样,内存要求会很高。

我该怎么做呢?

0 投票
0 回答
490 浏览

java - 如何用两个按钮杀死和启动线程

  1. 开始按钮...

    1. 停止按钮...

      /li>
    2. 这是我在同一活动中的主题。

      /li>

所以我要做的是。我想画一些用开始按钮开始的折线图,然后用停止按钮停止和清除。并使用开始按钮再次绘制新图形。但是每次我尝试重新启动时,应用程序都会因错误而关闭..

“话题已经开始了……”

所以我认为我需要通过单击停止按钮来终止或停止线程..我已经尝试了几种方法......推荐......在这里,我还无法解决。

请帮帮我..

(+而且我在这里很新,,,而且,,,我的英语不完美..这也是我的第一个问题..抱歉有任何错误。谢谢)