sha*_*afi 7 java multithreading runnable
我有一个日志代码,需要在所有Threadss 执行后执行.
Thread t1 = new MyThread();
Thread t2 = new MyThread();
t1.run();
t2.run();
doLogging();
Run Code Online (Sandbox Code Playgroud)
是否有任何方法doLogging()只有在两个线程完成其处理后才能执行.现在,doLogging()只要t1和t2开始,就会调用它.
Joa*_*uer 23
只要join()你之前的所有线程doLogging()调用:
t1.join();
t2.join();
// the following line will be executed when both threads are done
doLogging();
Run Code Online (Sandbox Code Playgroud)
请注意,join()如果要等待所有线程,则调用顺序无关紧要.
除了join()解决方案之外,java.util.concurrent库中还有一些名为CountDownLatch的东西.它允许您将其初始化为某个数字,然后等待它达到指定的次数.
简单的例子:
CountDownLatch latch = new CountDownLatch(NUMBER_OF_THREADS);
for(int i=0; i<NUMBER_OF_THREADS;i++)
new Thread(myCode).start();
latch.await();
Run Code Online (Sandbox Code Playgroud)
必须由工作线程明确地命中锁存器才能使其工作:
latch.countDown()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5732 次 |
| 最近记录: |