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