首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何“准确”地同时启动两个线程

如何“准确”地同时启动两个线程
EN

Stack Overflow用户
提问于 2010-07-31 10:57:13
回答 1查看 79.8K关注 0票数 103

线程应该在相同的时间间隔开始。我知道,如果你使用thread1.start(),在下一次执行thread2.start()之前需要几毫秒的时间。

这是可能的还是不可能的?

EN

回答 1

Stack Overflow用户

发布于 2010-08-01 00:55:35

为此,您可以使用CountDownLatch。请在下面找到一个样本。虽然t1和t2已经启动,但这些线程会一直等待,直到主线程在锁存器中倒计时。在构造函数中提到了所需的倒计时次数。倒计时锁存器也可用于等待线程完成执行,以便主线程可以继续执行(相反的情况)。这个类是从Java1.5开始包含的。

代码语言:javascript
复制
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
    }
}
票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3376586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档