【发布时间】:2014-02-17 00:10:48
【问题描述】:
下面是我编写的一个类,其目的是我们从主程序创建不同的线程,这些线程并行运行,并且在所有线程完成执行后主线程恢复执行。代码中的 t.join 将下一个线程连接到第一个线程。假设如果有 2 个线程使用随机数生成器生成 8 和 9 作为整数,那么主线程会在 17 秒后恢复。目的是并行创建线程,以便主线程在第 9 秒后恢复(第一个线程在前 8 秒内完全运行,然后第二个线程在接下来的 1 秒内完成执行)。是否可以通过更改以下代码来创建这样的代码?
我通过使用一个静态变量来解决它,该变量在执行后由每个线程递增,当线程数达到某个阈值时,我们停止执行。但是有没有其他方法可以做到这一点?
import java.util.Random;
public class ThreadsPlay {
public static void main(String[] args) {
try
{
for(int i=3;i<12;i=i+3)
{
Thread t=new Thread(){
Random r=new Random();
int count=r.nextInt(10);
public void run()
{
try
{
System.out.println("Thread+count="+count);
Thread.sleep(count*1000);
}
catch(Exception e)
{
e.printStackTrace();
}
}
};
t.start();
t.join();
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
【问题讨论】:
标签: java multithreading