jdk自帶Fature筆記

Fature的做用是異步獲取結果,不影響主線程執行,如下是代碼java

 

package com.lujiawei.thread;

import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.FutureTask;

public class UserFature implements Callable<Integer> {
	
	private int age;
	
	public UserFature(int age) {
		this.age = age;
	}

	@Override
	public Integer call() throws Exception {
		for(int i=0;i<10;i++){
			Thread.sleep(1000);
			age = age + 1;
			System.out.println("age --> "+age);
		}
		return age;
	}
	
	public static void main(String[] args) throws Exception {
		int age = 10;
		
		UserFature userFature = new UserFature(age);
		FutureTask<Integer> futureTask = new FutureTask<>(userFature);
		
		ExecutorService newFixedThreadPool = Executors.newFixedThreadPool(1);
		Future<?> f = newFixedThreadPool.submit(futureTask);
		System.out.println("直接返回");
		System.out.println(f.get());//當返回結果的時候f.get()爲null
		System.out.println("age爲-->"+futureTask.get());
	}

}

打印結果爲異步

直接返回
age --> 11
age --> 12
age --> 13
age --> 14
age --> 15
age --> 16
age --> 17
age --> 18
age --> 19
age --> 20
null
age爲-->20
相關文章
相關標籤/搜索