zoukankan      html  css  js  c++  java
  • 杀死future处理的阻塞线程

    public class Test{
        public static void main(String[] args){
            ExecutorService pool = Executors.newFixedThreadPool(4);
            BlockingQueue<Future> queue = new LinkedBlockingQueue<Future>();
            for (int i = 0; i < 4; i++) {
                Future<Integer> future = pool.submit(new A());
                queue.add(future);
            }
            int j = 0;
            for (int i = 0; i < 4; i++) {
                Future<Integer> future = null;
                try {
                    future = queue.take();
                    j += future.get(2,TimeUnit.SECONDS);
    
                } catch (InterruptedException e) {
                    e.printStackTrace();
                } catch (ExecutionException e) {
                    e.printStackTrace();
                } catch (TimeoutException e) {
                    System.out.println("超时了");
                    future.cancel(true);   // 取消这个线程执行的任务,让线程空闲,线程池的这个线程可以执行新的任务
                }
            }
            System.out.println("超时线程总和"+(4-j));
            /*
                超时了
                超时了
                总和2
            */
        }
        
        static class A implements Callable<Integer>{
            @Override
            public Integer call() throws InterruptedException {
    
                Thread.sleep(5000);
                return 1;
            }
        }
    }
    
    
  • 相关阅读:
    删掉从svn 文件夹里复制出来所带的信息(去掉.svn文件夹)
    AS3 loader
    as3鼠标事件
    linux 随机数
    AS3资源处理
    字符串合并
    linux time.h
    fat32转ntfs
    linux 杂项
    oracle——创建数据表
  • 原文地址:https://www.cnblogs.com/72808ljup/p/5359232.html
Copyright © 2011-2022 走看看