1. Java线程池
线程池:顾名思义,用一个池子装载多个线程,使用池子去管理多个线程。
问题来源:应用大量通过new Thread()方法创建执行时间短的线程,较大的消耗系统资源并且系统的响应速度变慢。【在一个什么程度上能够判断启用线程池对系统的资源消耗比启动定量的new Thread()资源消耗低?这个怎么测试?】【用户体验卡顿?慢?观察CPU百分比?】
解决办法:使用线程池管理短时间执行完毕的大量线程,通过重用已存在的线程,降低线程创建和销毁造成的消耗,提高系统响应速度。
2. Java线程池快速学习教程
2.1 创建线程池
图1 Executors静态方法图
2.2 线程池使用方法
图2 ExecutorService方法图
2.3 线程池快速使用举例
问题:线程池同时接受两个线程,两个线程分别执行打印0~100;
1 import java.util.concurrent.ExecutorService;
2 import java.util.concurrent.Executors;
3
4 public class Test {
5
public static void main(String[] args) {
6
ExecutorService pool = Executors.newCachedThreadPool();
7
pool.submit(new TestThread());
8
pool.submit(new TestThread());
9
pool.shutdown();
10 }
11
12 }
13
14
15 class TestThread implements Runnable{
16 @Override
17
public void run(){
18
for(int i = 0; i <= 100; ++i){
19
System.out.println(Thread.currentThread().getName() + ": " + i);
20
try {
21
Thread.sleep( (long) (1000L * Math.random()));
22
} catch (InterruptedException e) {
23
e.printStackTrace();
24
}
25
}
26 }
27 }