采用线程池实现多线程一:没有返回值
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 ---------------- ");
}
}
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 ---------------- ");
}
}
相关文章推荐
- 采用线程池实现多线程二:有返回值
- Qt中采用多线程实现Socket编程
- java多线程:线程池的原理及实现
- 一种带有返回值的,动态的线程池的实现(版本之一,草版)。从jdk1.5测试通过。
- 多线程之:模拟实现线程池的工作原理
- 当多线程执行需要返回执行结果的实现方式
- java 网络编程(2.4)-----------采用线程池多线程的Socket 通信
- 基本字符串压缩 利用字符重复出现的次数,编写一个方法,实现基本的字符串压缩功能。比如,字符串“aabcccccaaa”经压缩会变成“a2b1c5a3”。若压缩后的字符串没有变短,则返回原先的字符串。
- concurrent实现多线程的线程池开发
- J2SE多线程 part7 线程池的简单实现
- 多线程的使用——模拟线程池的实现(2015-12-02 00:14:59)
- Java多线程 - Callable 和 Future实现有返回值的线程
- Java通过开启线程池实现多线程
- Java 多线程:线程池实现原理
- Java多线程----Java 线程池的原理与实现
- 问题1:java中没有实现这种“byte a = 0xB2 --> String b = “B2””转换的简单实现需要自己实现。 答:自己编写的转换函数,思路将byte的高低4位分开,分别转换为对应的字符然后合成返回的字符串。 java 代码 1.
- 采用多线程和生产者消费者模式来实现对于一个目录以及所有子目录下的文件内容的搜索,打印出包含指定关键字的行.
- 并发垃圾收集器(CMS)为什么没有采用标记-整理算法来实现?
- Java:多线程,线程池,使用CompletionService通过Future来处理Callable的返回结果
- Python 多进程_进程池_多线程_线程池实现比较