newCachedThreadPool
:如果没有可用的现有线程,则新的线程将被创建并添加到池中。超过六十秒未使用将被终止并从缓存中删除。
/**
* 可缓存线程池
*/
@Test
public void testNewCachedThreadPool() {
ExecutorService e1 = Executors.newCachedThreadPool();
e1.submit(new Runnable() {
@Override
public void run() {
System.out.println("开启线程:" + Thread.currentThread().getName());
}
});
}
newFixedThreadPool
:可以控制最大线程并发数的线程池,定长线程池
/**
* 定长线程池
*/
@Test
public void testNewFixedThreadPool() {
ExecutorService e2 = Executors.newFixedThreadPool(5);
e2.submit(() -> {
System.out.println("开启线程: " + Thread.currentThread().getName());
});
}
newScheduledThreadPool
:创建一个定长线程池,支持定时任务和周期任务的执行
@Test
public void testNewScheduledThreadPool() {
ExecutorService e3 = Executors.newScheduledThreadPool(5);
e3.submit(new Runnable() {
@Override
public void run() {
System.out.println("开启线程: " + Thread.currentThread().getName());
}
});
}
newSingleThreadExecutor
:创建单线程化线程池,每次只有一个工作线程用于执行任务,可以等同于newFixedThreadPool(1)
@Test
public void testNewSingleThreadExecutor() {
ExecutorService e4 = Executors.newSingleThreadExecutor();
e4.submit(new Runnable() {
@Override
public void run() {
System.out.println("开启线程: " + Thread.currentThread().getName());
}
});
}
运行所有测试: