zoukankan      html  css  js  c++  java
  • Java8-Executors-No.03

    import java.util.Arrays;
    import java.util.List;
    import java.util.concurrent.Callable;
    import java.util.concurrent.ExecutionException;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    import java.util.concurrent.ScheduledExecutorService;
    import java.util.concurrent.ScheduledFuture;
    import java.util.concurrent.TimeUnit;
    
    public class Executors3 {
    
        public static void main(String[] args) throws InterruptedException, ExecutionException {
            test1();
    //        test2();
    //        test3();
    
    //        test4();
    //        test5();
        }
    
        private static void test5() throws InterruptedException, ExecutionException {
            ExecutorService executor = Executors.newWorkStealingPool();
    
            List<Callable<String>> callables = Arrays.asList(
                    callable("task1", 2),
                    callable("task2", 1),
                    callable("task3", 3));
    
            String result = executor.invokeAny(callables);
            System.out.println(result);
    
            executor.shutdown();
        }
    
        private static Callable<String> callable(String result, long sleepSeconds) {
            return () -> {
                TimeUnit.SECONDS.sleep(sleepSeconds);
                return result;
            };
        }
    
        private static void test4() throws InterruptedException {
            ExecutorService executor = Executors.newWorkStealingPool();
    
            List<Callable<String>> callables = Arrays.asList(
                    () -> "task1",
                    () -> "task2",
                    () -> "task3");
    
            executor.invokeAll(callables)
                    .stream()
                    .map(future -> {
                        try {
                            return future.get();
                        }
                        catch (Exception e) {
                            throw new IllegalStateException(e);
                        }
                    })
                    .forEach(System.out::println);
    
            executor.shutdown();
        }
    
        private static void test3() {
            ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
    
            Runnable task = () -> {
                try {
                    TimeUnit.SECONDS.sleep(2);
                    System.out.println("Scheduling: " + System.nanoTime());
                }
                catch (InterruptedException e) {
                    System.err.println("task interrupted");
                }
            };
    
            executor.scheduleWithFixedDelay(task, 0, 1, TimeUnit.SECONDS);
        }
    
        private static void test2() {
            ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
            Runnable task = () -> System.out.println("Scheduling: " + System.nanoTime());
            int initialDelay = 0;
            int period = 1;
            executor.scheduleAtFixedRate(task, initialDelay, period, TimeUnit.SECONDS);
        }
    
        private static void test1() throws InterruptedException {
            ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
    
            Runnable task = () -> System.out.println("Scheduling: " + System.nanoTime());
            int delay = 3;
            ScheduledFuture<?> future = executor.schedule(task, delay, TimeUnit.SECONDS);
    
            TimeUnit.MILLISECONDS.sleep(1337);
    
            long remainingDelay = future.getDelay(TimeUnit.MILLISECONDS);
            System.out.printf("Remaining Delay: %sms
    ", remainingDelay);
        }
    
    }
    
  • 相关阅读:
    poj2954
    bzoj1863
    bzoj2002
    bzoj1389
    [POJ3041] Asteroids(最小点覆盖-匈牙利算法)
    [POJ2594] Treasure Exploration(最小路径覆盖-传递闭包 + 匈牙利算法)
    [POJ2446] Chessboard(二分图最大匹配-匈牙利算法)
    [luoguP1266] 速度限制(spfa)
    [luoguP1186] 玛丽卡(spfa)
    [luoguP1027] Car的旅行路线(Floyd)
  • 原文地址:https://www.cnblogs.com/bilaisheng/p/10210905.html
Copyright © 2011-2022 走看看