• Callable+Future


          Future提供了三种功能:

      1)判断任务是否完成;

      2)能够中断任务;

      3)能够获取任务执行结果

    package com.moreas;
    
    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 TestCallable {
        public static void main(String[] args) {
            ExecutorService executor = Executors.newCachedThreadPool();
            Task task = new Task();
            Future<Integer> result = executor.submit(task);
            //这里只是将空闲的线程中断,将线程池的状态改为shutdown,不能继续往线程池中添加任务
            executor.shutdown();
    
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e1) {
                e1.printStackTrace();
            }
    
            System.out.println("主线程在执行任务");
    
            try {
                System.out.println("task运行结果" + result.get());
            } catch (InterruptedException e) {
                e.printStackTrace();
            } catch (ExecutionException e) {
                e.printStackTrace();
            }
    
            System.out.println("所有任务执行完毕");
        }
    
    }
    
    class Task implements Callable<Integer> {
        @Override
        public Integer call() throws Exception {
            System.out.println("子线程在进行计算");
            Thread.sleep(3000);
            int sum = 0;
            for (int i = 0; i <= 100; i++)
                sum += i;
            return sum;
        }
    }
  • 相关阅读:
    js获取当前时间日期
    js操作Cookie
    C#常用正则表达式
    jquery操作select、radio、checkbox表单元素
    js实现页面跳转的几种方式
    js获取页面宽高大小
    c++写一个类后编译发现class重定义
    vtkMultiThreader坑爹吗?
    vtkStandardNewMacro()出现错误的问题
    转:将CFormView嵌入到CDockablePane中
  • 原文地址:https://www.cnblogs.com/moris5013/p/10868115.html
Copyright © 2020-2023  润新知