Onk*_*nki 2 java multithreading anonymous-class inner-classes
我有一个要求,其中28个线程必须完成一些功能.我在匿名内部类中创建了这些线程,如:
Thread t=new Thread(new Runnable(){public void run()
{//code
}}
);
t.start();
Run Code Online (Sandbox Code Playgroud)
现在我希望在所有这些线程完成工作之后进一步执行.
注意:我对join()方法感到困惑,因为它使我的线程顺序运行.
所以任何人都可以建议我,一旦这些线程完成工作,我怎样才能使主线程运行.
注意:我对join()方法感到困惑,因为它使我的线程顺序运行.
如果您有这样的代码,它会这样做:
for (Runnable runnable : runnables) {
Thread t = new Thread(runnable);
t.start();
t.join();
}
Run Code Online (Sandbox Code Playgroud)
但是,您可以启动要并行运行的所有线程,然后join全部调用它们.例如:
List<Thread> threads = new ArrayList<>();
for (Runnable runnable : runnables) {
Thread t = new Thread(runnable);
t.start();
threads.add(t);
}
// Now everything's running - join all the threads
for (Thread thread : threads) {
thread.join();
}
// Now you can do whatever you need to after all the
// threads have finished.
Run Code Online (Sandbox Code Playgroud)
当然还有许多其他方法 - 直接启动线程可能不像在使用更高级别的抽象中那样适合您的代码; 这取决于你想要实现的目标.以上情况应该可以正常工作 - 假设所有Runnables都能够并行运行而不会通过同步相互阻塞.
| 归档时间: |
|
| 查看次数: |
4770 次 |
| 最近记录: |