基于newFixedThreadPool实现多线程案例
作者:牛鼻子老赵
这篇文章主要介绍了基于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、处理结果

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