Java线程池ExecutorService 代码备忘

ExecutorService fixedThreadPool = Executors.newFixedThreadPool(5)
创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待
package UnitTest;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future; public class test {
public static void main(String[] args) {
int flag = 0;
long a = System.currentTimeMillis();
ExecutorService fixedThreadPool = Executors.newFixedThreadPool(2);
List<Future> resultList = new ArrayList<>();
for (int i = 1; i < 101; i++) {
Future future = fixedThreadPool.submit(new ThreadWithRunnable(i));
resultList.add(future);
}
fixedThreadPool.shutdown(); for (Future fs : resultList) {
try {
System.out.println(fs.get().toString());
flag += Integer.parseInt(fs.get().toString());
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
} System.out.println(flag);
System.out.println("\r<br>执行耗时 : " + (System.currentTimeMillis() - a) / 1000f + " 秒 "); }
}
package UnitTest;

import java.util.concurrent.Callable;

public class ThreadWithRunnable implements Callable {
private int number;
public ThreadWithRunnable(int number){
this.number = number;
} @Override
public Object call() throws Exception {
for (int i=1;i<1000;i++){
Thread.sleep(1);
}
return number;
}
}
上一篇:Linux第十节课学习笔记


下一篇:洛谷 P1057 解题报告