您的位置:首页 > 其它

采用线程池实现多线程一:没有返回值

2013-07-24 19:00 351 查看
一:MyThread1 类

public class MyThread1 implements Runnable {
private CountDownLatch countDownLatch;
public MyThread1(CountDownLatch countDownLatch){
this.countDownLatch = countDownLatch;
}

@Override
public void run() {

Random random = new Random();

int randInt = random.nextInt();

System.out.println(randInt);

//递减锁存器的计数,如果计数到达零,则释放所有等待的线程
countDownLatch.countDown();
}

}

二:测试类
public class MyThread1Test {

public static void main(String[] args) throws InterruptedException {
CountDownLatch countDownLatch = new CountDownLatch(5);

//创建一个可重用固定线程数的线程池,以共享的无界队列方式来运行这些线程,在需要时使用提供的 ThreadFactory 创建新线程。
ExecutorService executorService = Executors.newFixedThreadPool(5);

for (int i = 0; i < 5; i++) {

//提交要执行的 Runnable 任务,并返回一个表示任务完成的 Future,可以提取或轮询此任务
executorService.submit(new MyThread1(countDownLatch));

}

//使当前线程在锁存器倒计数至零之前一直等待,除非线程被中断。
countDownLatch.await();//wait for all to finish

executorService.shutdown();

System.out.println("end ---------------- ");

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐