线程应该在相同的时间间隔开始。我知道,如果你使用thread1.start()
,在下一次执行thread2.start()
之前需要几毫秒的时间。
这是可能的还是不可能的?
发布于 2010-08-01 00:55:35
为此,您可以使用CountDownLatch。请在下面找到一个样本。虽然t1和t2已经启动,但这些线程会一直等待,直到主线程在锁存器中倒计时。在构造函数中提到了所需的倒计时次数。倒计时锁存器也可用于等待线程完成执行,以便主线程可以继续执行(相反的情况)。这个类是从Java1.5开始包含的。
import java.util.concurrent.CountDownLatch;
public class ThreadExample
{
public static void main(String[] args)
{
CountDownLatch latch = new CountDownLatch(1);
MyThread t1 = new MyThread(latch);
MyThread t2 = new MyThread(latch);
new Thread(t1).start();
new Thread(t2).start();
//Do whatever you want
latch.countDown(); //This will inform all the threads to start
//Continue to do whatever
}
}
class MyThread implements Runnable
{
CountDownLatch latch;
public MyThread(CountDownLatch latch)
{
this.latch = latch;
}
@Override
public void run()
{
try
{
latch.await(); //The thread keeps waiting till it is informed
} catch (InterruptedException e) {
e.printStackTrace();
}
//Do the actual thing
}
}
https://stackoverflow.com/questions/3376586
复制相似问题