博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Callable 与 Future
阅读量:6864 次
发布时间:2019-06-26

本文共 2732 字,大约阅读时间需要 9 分钟。

package cn.itcast.write;import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Future;public class FutureAndCall {    /**     * Callable与Runnable类似     * call方法和run方法     *      * Future 获取结果异常     */    public static void main(String[] args) {                //1---------------------------------        ExecutorService threadPool = Executors.newSingleThreadExecutor();        Future
future = threadPool.submit(new Callable
() { @Override public String call() throws Exception { return "200"; } }); try { System.out.println(future.get()); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ExecutionException e) { // TODO Auto-generated catch block e.printStackTrace(); } threadPool.shutdownNow(); //2--------------------------------- CallableTask task1 = new CallableTask(1); CallableTask task2 = new CallableTask(2); CallableTask task3 = new CallableTask(3); try { ExecutorService threadPool1= Executors.newFixedThreadPool(3); Future
f1 = threadPool1.submit(task1); System.out.println(f1.get()); Future
f2 = threadPool1.submit(task2); System.out.println(f2.get()); try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } f2.cancel(true); Future
f3 = threadPool1.submit(task3); System.out.println(f3.get()); threadPool1.shutdownNow(); } catch (InterruptedException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (ExecutionException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } }}class CallableTask implements Callable
{ private int data; public CallableTask(int data){ this.data = data; } @Override public Integer call() throws Exception { if (data == 1) { return 1; } if (data == 2) { while(true){ System.out.println("2222"); Thread.sleep(1000); return 2; } } if (data == 3) { /*try { throw new Throwable(); } catch (Throwable e) { e.printStackTrace(); }*/ } return null; } }

 

转载于:https://www.cnblogs.com/lxh520/p/9337538.html

你可能感兴趣的文章