Java—Callable,Future的使用
2015-02-13 17:54
483 查看
package cn.itcast.heima;
import java.util.Random;
import java.util.concurrent.Callable;
import java.util.concurrent.CompletionService;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorCompletionService;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
public class CallableAndFuture {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ExecutorService threadpool = Executors.newSingleThreadExecutor(); //默认创建一个线程
Future<String> future = threadpool.submit(new Callable<String>(){
@Override
public String call() throws Exception {
// TODO Auto-generated method stub
Thread.sleep(2000);
return "hello"; //返回的结果
}
});
System.out.println("等待结果");
try {
System.out.println("结果:"+future.get());
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ExecutionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ExecutorService threadPool2 = Executors.newFixedThreadPool(10); //创建10个线程
CompletionService<Integer> completionService = new ExecutorCompletionService<Integer>(threadPool2);
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; //返回结果
}
});
}
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();
}
}
}
}
效果图:
import java.util.Random;
import java.util.concurrent.Callable;
import java.util.concurrent.CompletionService;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorCompletionService;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
public class CallableAndFuture {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ExecutorService threadpool = Executors.newSingleThreadExecutor(); //默认创建一个线程
Future<String> future = threadpool.submit(new Callable<String>(){
@Override
public String call() throws Exception {
// TODO Auto-generated method stub
Thread.sleep(2000);
return "hello"; //返回的结果
}
});
System.out.println("等待结果");
try {
System.out.println("结果:"+future.get());
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ExecutionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ExecutorService threadPool2 = Executors.newFixedThreadPool(10); //创建10个线程
CompletionService<Integer> completionService = new ExecutorCompletionService<Integer>(threadPool2);
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; //返回结果
}
});
}
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 使用Callable和Future返回线程执行的结果
- Java并发编程:Callable和Future使用
- Java Callable、Future的两种使用方式
- java线程:关于Callable和Future的简单使用:有返回值的线程
- java多线程与并发之Callable和Future使用
- Java:多线程,线程池,使用CompletionService通过Future来处理Callable的返回结果
- java再复习-Future与Callable的使用
- Java 并发编程(八)Future和Callable,CompletionService的使用
- Java的Callable和Future使用
- java多线程学习笔记:使用Callable和Future
- Java中的Runnable、Callable、Future、FutureTask的区别和CompletionService的使用场景
- Java之Callable Future FutureTask Exectuor使用笔记
- Java:多线程,线程池,使用CompletionService通过Future来处理Callable的返回结果
- Java:多线程,线程池,使用CompletionService通过Future来处理Callable的返回结果
- java中的Callable和Future的使用和困惑
- Android AsyncTask完全解析FutureTask 深度解析 -Java并发编程:Callable、Future和FutureTask一个使用DownloadManager下载文件的小例
- Java多线程研究06-带返回值的线程定义接口Callable以及Future,FutureTask的使用
- java自定义任务类定时执行任务示例 callable和future接口使用方法
- 浅谈在Java中使用Callable、Future进行并行编程
- Java Callable Future 使用