Java高并发模型
1 前言
汇总自己用到的高并发模型
2 代码
package MainFixedFuc;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class SingleTest {
public static void main(String[] args) {
// 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待
ExecutorService executorService = Executors.newFixedThreadPool(10);
for (int k = 0; k < 10; k++) {
final int t = k;
executorService.submit(new Runnable() {
@Override
public void run() {
try {
getID(t);
} catch (Exception e) {
} finally {
}
}
}
);
}
// 平滑的关闭ExecutorService,当所有提交任务执行完毕,线程池即被关闭
executorService.shutdown();
while (true) {
// System.out.println("等待线程执行完成");
// isTerminated当调用shutdown()方法后,并且所有提交的任务完成后返回为true
if (executorService.isTerminated()) {
// System.out.println("线程执行完成");
break;
}
}
System.out.println("多线程执行完成");
}
public static int getID(int id) throws Exception {
Thread.sleep(3000);
System.out.println("任务id: " + id);
return id;
}
}
开源永流传