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、处理结果

  • 相关阅读:
    Ajax
    Guitar and Music Theory
    leetcode62 不同路径(Medium)
    leetcode49 字母异位词分组(Medium)
    leetcode3 无重复的最长子串(Medium)
    leetcode69 x的平方根(Easy)
    leetcode300 最长上升子序列(Medium)
    leetcode240 搜索二维矩阵II (Medium)
    leetcode34 在排序数组中查找元素的第一个和最后一个位置(Medium)
    leetcode31 下一个排列(Medium)
  • 原文地址:https://www.cnblogs.com/zhanh247/p/12402425.html
Copyright © 2011-2022 走看看