江湖开发者 | Java粉
网站地图
首页> Java> java异步处理技术future
2016
05-05

java异步处理技术future

java异步处理技术future


java中的异步处理技术:回调和Future


回调和Future的不同:

Futrue 需要间隔检查Future是否已完成,而使用回调会直接收到返回通知.


Futures是一个抽象的概念,它表示一个值,该值可能在某一个点变得可用。一个Future要么获得计算完的结果,要么获得计算失败后的异常。Java在java.util.concurrent包中附带了Future接口,它使用Executor异步执行.例如下面的代码,每传递一个Runnable对象到ExecutorService.submit()方法就会得到一个回调的Future.你能使用它检测是否执行完成.

public static void main(String[] args) throws InterruptedException, ExecutionException {
		ExecutorService executor = Executors.newCachedThreadPool();
		
		Runnable task1 = new Runnable(){
			@Override
			public void run() {
				System.out.println("i am task1...");
			}
		};
		
		Callable<Integer> task2 = new Callable<Integer>(){

			@Override
			public Integer call() throws Exception {
				return new Integer(100);
			}
			
		};
		
		Future<?> f1 = executor.submit(task1);
		
		Future<Integer> f2 = executor.submit(task2);
		
		System.out.println("task1 is completed? "+f1.isDone());
		System.out.println("task2 is completed? "+f2.isDone());
		
		while(f1.isDone()){
			System.out.println("task1 completed.");
			break;
		}
		while(f2.isDone()){
			System.out.println("reutrn value by task2:"+f2.get());
			break;
		}
		
	}




Java江湖     
全部评论:

表情验证码,看不清楚,换一张

随机文章

云标签

公众号

微信

分享:分享我们的知识;专注:专注个人技术的提升;