Java多线程处理某个线程超时的问题

ExecutorService exec = Executors.newFixedThreadPool(4);
        List<Future<Integer>> futures = new ArrayList<>();
        Callable<Integer> task;
        for (int i = 0;i<4;i++) {
            task = () -> {
                TimeUnit.SECONDS.sleep(50);
                return 1;
            };
            Future<Integer> futureNow = exec.submit(task);
            futures.add(futureNow);
        }
//        List<Future<Integer>> futures = exec.invokeAll(tasks);
        for (Future<Integer> future :
                futures) {

            try {
                Integer intRes = future.get(2000, TimeUnit.MILLISECONDS);
                System.out.println("second verify result integer : " + intRes);
            } catch (TimeoutException ex) {
                System.out.println("video second verify overtime error ");
                future.cancel(true);
            } catch (Exception e) {
                System.out.println("video second verify others error");
                future.cancel(true);
            }
        }
        exec.shutdown();

待完善

猜你喜欢

转载自www.cnblogs.com/nyatom/p/10792286.html
今日推荐