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

基于newFixedThreadPool实现多线程案例

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持免费资源网。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。