• 一个简单的通过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、处理结果

  • 相关阅读:
    【微服务架构】SpringCloud组件和概念介绍(一)
    getaddrinfo()详解
    通货膨胀背景下,只能好好搞技术了
    到此为止,重新开始
    二级指针
    一篇关于spice vdagent和利用virtmanager配置spice的文章
    局域网中两台无线路由器联接配置方法图文教程
    ovirt简介
    IIS fastcgi 超时处理
    关于eclipse无法自动编译的问题
  • 原文地址:https://www.cnblogs.com/zhanh247/p/12402425.html
Copyright © 2020-2023  润新知