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);
        }
    
    }
    
  • 相关阅读:
    智器SmartQ T7实体店试用体验
    BI笔记之SSAS库Process的几种方案
    PowerTip of the Day from powershell.com上周汇总(八)
    PowerTip of the Day2010071420100716 summary
    PowerTip of the Day from powershell.com上周汇总(十)
    PowerTip of the Day from powershell.com上周汇总(六)
    重新整理Cellset转Datatable
    自动加密web.config配置节批处理
    与DotNet数据对象结合的自定义数据对象设计 (二) 数据集合与DataTable
    在VS2003中以ClassLibrary工程的方式管理Web工程.
  • 原文地址:https://www.cnblogs.com/bilaisheng/p/10210905.html
Copyright © 2011-2022 走看看