gpt4 book ai didi

java - 多线程连接(长毫秒)操作

转载 作者:行者123 更新时间:2023-11-30 08:18:05 25 4
gpt4 key购买 nike

直接提问。 Thread.join(x) 从调用 start() 方法的那一刻开始计数,或者从 join(x) 方法被调用的那一刻开始计数叫什么?

演示:以下哪种解决方案是正确的做法?

        Set<Thread> myThreads=new HashSet<Thread>();
for(Task t : tasks){
try{
Thread thread=new ConcurrentTask(t);
thread.start();
myThreads.add(thread);
Thread.sleep(1000);
}catch(Exception e){

}
}
//solution 1:
for(Thread t: myThreads){
try{
t.join(10000) //wait for at most 10 seconds
}catch(Exception e){}
}
//solution 2:
long maxWaitTime=System.currentTimeMillis()+ (10*1000);//max wait is 10 seconds;
for(Thread t: myThreads){
long threadWait=maxWaitTime - System.currentTimeMillis();
if(threadWait<100){
threadWait=100;
}
try{
t.join(threadWait) //wait for at most 10 seconds
}catch(Exception e){}

}

最佳答案

由于您正在执行多个线程,并且看起来所有线程的最大等待时间应该为 10 秒,因此选项 2 是正确的。等待时间来自等待执行,它不检查总线程执行时间。

关于java - 多线程连接(长毫秒)操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29372465/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com