zoukankan      html  css  js  c++  java
  • 一个简单的通过newFixedThreadPool实现多线程案例

    1、异步提交,串行改为并行处理

    package com.hao.thread;
    
    import java.util.ArrayList;
    import java.util.List;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    import java.util.concurrent.Future;
    
    public class ThreadTest {
    
        public static void main(String[] args) {
            long start = System.currentTimeMillis();
            System.out.println(action());
            long end = System.currentTimeMillis();
            System.out.println(end - start);
        }
    
        public static List<String> action() {
            List<String> list = new ArrayList<String>();
            ExecutorService pool = Executors.newFixedThreadPool(3);
            Future<String> submit1 = pool.submit(() -> action1("action1"));
            Future<String> submit2 = pool.submit(() -> action2("action2"));
            Future<String> submit3 = pool.submit(() -> action3("action3"));
            try {
                list.add(submit1.get());
                list.add(submit2.get());
                list.add(submit3.get());
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                pool.shutdown();
            }
            return list;
        }
    
        private static String action1(String action1) {
            sleep(5000);
            return action1 + " # " + Thread.currentThread().getName();
        }
    
        private static String action2(String action2) {
            sleep(5000);
            return action2 + " # " + Thread.currentThread().getName();
        }
    
        private static String action3(String action3) {
            sleep(5000);
            return action3 + " # " + Thread.currentThread().getName();
        }
    
        private static void sleep(long millis) {
            try {
                Thread.sleep(millis);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

    2、处理结果

  • 相关阅读:
    多层动态库的编译及使用
    gxx -L和/etc/ld.so.conf的理解
    cmake 创建并调用动态库和静态库
    cifX驱动安装及SYCON.net的使用
    企业号新手指引
    转:Python正则表达式指南
    Windows平台安装Beautiful Soup
    微信企业号、订阅号、服务号之间有什么区别和不同
    常见HTTP状态(304,200等)
    微信内置浏览器对于html5的支持
  • 原文地址:https://www.cnblogs.com/zhanh247/p/12402425.html
Copyright © 2011-2022 走看看