Java Future

java jdk里面的线程池蛮好用的,之前看的时候忽略掉了一个很好玩的类Future, 顺便记录一下, 这方面的博客很多,就不多说了

java Future 设计模式:http://www.2cto.com/kf/201411/351903.html

javaFuture ExecutorService: http://blog.csdn.net/wei369924173/article/details/7992642

java线程池:http://my.oschina.net/u/1398304/blog/376827

这里贴下我的测试代码:

public class Test {

    String result;

public static final void main(String argvs[]) throws InstantiationException, IllegalAccessException, InterruptedException, ExecutionException{

  ExecutorService services = Executors.newFixedThreadPool(2);

  final Test test = (Test) Test.class.newInstance();

      Future<Test> future = services.submit(new Runnable(){

    public void run() {

      test.result = "start";

    try {

    Thread.sleep(5000);

    } catch (InterruptedException e) {

    e.printStackTrace();}

    test.result = "end";

    }

      }, test);

    //做其他的事情

    System.out.println("1: result="+future.get().result); //阻塞方法

    }

}

等待一段时间后输出:1:result=end

特别注意的事,future.cancel(boolean)方法, 这个方法参数如果是true,那么正在执行被取消任务的线程的中段标志会被置为true, 换句话说,只有执行任务的时候判断了中断状态,被中断就结束任务,否则任务还会继续执行完

 java thread中断:http://blog.csdn.net/sunxing007/article/details/9123363

 

原文地址:https://www.cnblogs.com/zhangyan-2015/p/5453494.html