Java5中线程池与线程结果返回
2014-02-20 23:00
295 查看
Exectutors
//以下为各种起线程池方式
//ExecutorService threadPool = Executors.newFixedThreadPool(3);
//ExecutorService threadPool = Executors.newCachedThreadPool();
// ExecutorService threadPool = Executors.newSingleThreadExecutor();
//等待6秒后间隔2秒就定时任务调起,
Executors.newScheduledThreadPool(3).scheduleAtFixedRate(
new Runnable(){
@Override
public void run() {
System.out.println("bombing!");
}},
6,
2,
TimeUnit.SECONDS);
/./起一个单例线程,线程死了会重新拉起来
ExecutorService threadPool = Executors.newSingleThreadExecutor();
//通过Future对象可获取线程返回结果
Future<String> future =
threadPool.submit(
new Callable<String>() {
public String call() throws Exception {
Thread.sleep(2000);
return "hello";
};
}
);
//等待线程返回结果打印出来
System.out.println(“thread return: ”+ future.get());
-------------------------------------------------------------
//创建一个10个纯种的线程池
ExecutorService threadPool2 = Executors.newFixedThreadPool(10);
//CompletionService可以获取先运行结束的线程返回
CompletionService<Integer> completionService = new ExecutorCompletionService<Integer>(threadPool2);
//提交10个任务
for(int i=1;i<=10;i++){
final int seq = i;
completionService.submit(new Callable<Integer>() {
@Override
public Integer call() throws Exception {
Thread.sleep(new Random().nextInt(5000));
return seq;
}
});
}
//等待10个任务的线程返回结果(先运行完的为第一个返回)
for(int i=0;i<10;i++){
try {
System.out.println(
completionService.take().get());
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ExecutionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//以下为各种起线程池方式
//ExecutorService threadPool = Executors.newFixedThreadPool(3);
//ExecutorService threadPool = Executors.newCachedThreadPool();
// ExecutorService threadPool = Executors.newSingleThreadExecutor();
//等待6秒后间隔2秒就定时任务调起,
Executors.newScheduledThreadPool(3).scheduleAtFixedRate(
new Runnable(){
@Override
public void run() {
System.out.println("bombing!");
}},
6,
2,
TimeUnit.SECONDS);
/./起一个单例线程,线程死了会重新拉起来
ExecutorService threadPool = Executors.newSingleThreadExecutor();
//通过Future对象可获取线程返回结果
Future<String> future =
threadPool.submit(
new Callable<String>() {
public String call() throws Exception {
Thread.sleep(2000);
return "hello";
};
}
);
//等待线程返回结果打印出来
System.out.println(“thread return: ”+ future.get());
-------------------------------------------------------------
//创建一个10个纯种的线程池
ExecutorService threadPool2 = Executors.newFixedThreadPool(10);
//CompletionService可以获取先运行结束的线程返回
CompletionService<Integer> completionService = new ExecutorCompletionService<Integer>(threadPool2);
//提交10个任务
for(int i=1;i<=10;i++){
final int seq = i;
completionService.submit(new Callable<Integer>() {
@Override
public Integer call() throws Exception {
Thread.sleep(new Random().nextInt(5000));
return seq;
}
});
}
//等待10个任务的线程返回结果(先运行完的为第一个返回)
for(int i=0;i<10;i++){
try {
System.out.println(
completionService.take().get());
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ExecutionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
相关文章推荐
- Java 多线程 Executor 线程池 从线程返回结果 Java编程思想读书笔记
- Java线程池及Future、Callable获得线程返回结果【Java线程池系列2】
- Java线程池及Future、Callable获得线程返回结果【Java线程池系列2】
- Java:多线程,线程池,使用CompletionService通过Future来处理Callable的返回结果
- java 使用Callable和Future返回线程执行的结果
- Android多线程研究(8)——Java5中Futrue获取线程返回结果
- 开线程池在子线程下载,用接口回调与Handler返回结果
- JAVA多线程实现方式主要有三种:继承Thread类、实现Runnable接口、使用ExecutorService、Callable、Future实现有返回结果的多线程。其中前两种方式线程执行完后都没
- Android多线程研究(8)——Java5中Futrue获取线程返回结果
- Java:多线程,线程池,使用CompletionService通过Future来处理Callable的返回结果
- Java带有返回结果的新线程:Callable
- java中等待一些线程执行完之后,再去执行别的方法(后者需要使用前者返回的结果)
- JAVA 线程池之Callable返回结果
- Java--使用ExecutorCompletionService 管理线程池处理任务的返回结果
- 线程池ExecutorService和完成服务CompletionService的使用获取线程的返回结果
- Java:多线程,线程池,使用CompletionService通过Future来处理Callable的返回结果
- java中等待一些线程执行完之后,再去执行别的方法(后者需要使用前者返回的结果)
- Java线程总结(十三):并发包------线程返回结果Callable和 Future
- 线程池等待一定数目的线程执行完毕之后返回结果
- Java:多线程,线程池,使用CompletionService通过Future来处理Callable的返回结果