java 多线程之Future与FutureTask

来源:互联网 发布:上海惠保数据不发工资 编辑:程序博客网 时间:2024/06/06 05:02

Future 一个接口代表一个思想:如果调用的算法返回的数据,并且后续计算与这些数据没关系的话,大可不必浪费时间等待其完成。

FutureTask 是JDK提供的一个实现类 它接收一个实现Callable接口的业务对象,通常配合线程池一起使用。


掌握思想就能够在合适的场合去正确的应用,其实并不难。下面给出简单的示例一看即懂:


package demo01;import java.util.concurrent.Callable;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.FutureTask;import java.util.concurrent.TimeUnit;public class FutureTest{public static void main(String[] args) throws Exception{FutureTask<String> futureTask=new FutureTask<>(new ExecuteSomething("ziwu"));ExecutorService service=Executors.newFixedThreadPool(1);service.submit(futureTask);TimeUnit.MINUTES.sleep(2);System.out.println(futureTask.get());}}class ExecuteSomething implements Callable<String>{protected String data;public ExecuteSomething(String data){this.data = data;}@Overridepublic String call() throws Exception{TimeUnit.MINUTES.sleep(1);return data;}}


阅读全文
0 0
原创粉丝点击