【发布时间】:2021-10-06 09:37:40
【问题描述】:
在我的程序中,我有一个状态栏,在那里我使用Thread.activeCount() 指示活动线程的数量,这一切都很好,但目前只有当我单击按钮时才会更新:我再次阅读Thread.activeCount() 然后更新栏上的数字——这不是很有用,因为我必须“手动”请求更新数字。
@FXML
public void btnShowThreads() {
btnShowThreads.setText(String.valueOf(Thread.activeCount()));
}
我需要做的是让一个监听器使用它,但我找不到这样做的方法。我试图避免使用计时器,例如每 0.5 秒运行一次以更新数字 - 因为线程可能在很长一段时间内都是相同的数字。
如何做到这一点?如何收听Thread.activeCount() 的变化?
【问题讨论】:
-
你不能,至少不能纯粹使用 Java。每半秒运行一次的计时器(或更好的动画)应该没问题。但也请记住,该方法并不完全可靠,如 its documentation 中所述。
-
如果您控制所有线程/后台任务的创建和执行,您可以创建一个
Executor来跟踪有多少正在运行并将它们提交给该执行程序。如果您在这种情况下操作,这可能是比不断轮询Thread.activeCount()更好的解决方案;不过,这与您提出问题的方式略有不同。
标签: java multithreading javafx listener