【发布时间】:2017-05-13 11:03:55
【问题描述】:
我在我的程序中处理多个线程。有一些独立的线程,一些线程依赖于其他线程的完成才开始执行。
目前我正在这样做
for ( final String inElementId : inElements )
{
Thread thread = threadsMap.get( inElementId );
if ( ( thread != null ) && thread.interrupted() )
{
Thread.currentThread().interrupt();
throw new RuntimeException();
} else {
thread.join();
}
}
所以每个线程都会检查它所依赖的线程是否仍在运行,然后等待其完成。
我想编写一个执行器服务来系统地管理线程。 但我找不到检查依赖项的方法。
如何使用线程池执行器服务来做到这一点,thread B 只能在 thread A 完成执行后提交?或者有没有其他更好的方法来管理这些线程?
P.S:也有可能thread B先提交,但它依赖于A所以一直等到thread A提交完成执行。
【问题讨论】:
-
我认为不是检查线程A是否完成,而是检查A应该做的任务是否完成是不可能的
标签: java multithreading executorservice threadpoolexecutor