Mal*_*ker 2 java multithreading
我有许多正在执行长期任务的线程。这些线程本身具有子线程,这些子线程会进一步细分工作。我跟踪以下内容的最佳方法是什么:
我想以一种尽可能高效的方式做到这一点,并且一旦线程完成,由于我需要尽早释放内存,我不希望对它们有任何引用。
有什么建议吗?
不要以线程(它们是OS对象并且不包含任何应用程序语义)的角度来考虑,而要以任务的角度来考虑。线程不能知道任务完成了50%。查看java.util.concurrent中用于根据执行程序和可调用对象管理任务的工具。
在大多数情况下,如果您使用Java(即非嵌入式系统),则不必关心进程创建的线程数(或创建的线程数少于创建的对象数)-您不想用完,但是如果您以高级语言显式管理OS资源,则可能是错误的抽象级别。
对于中间反馈,请创建一个进度侦听器接口,该接口包含一个用于通知侦听器的方法,该方法通知任务必须到达的位置,将其传递给创建时的任务,并在进度变化时在您的任务期间调用它。确保该接口的任何实现都是线程安全的。
| 归档时间: |
|
| 查看次数: |
1717 次 |
| 最近记录: |