Kotlin-Demo/bunny/thread/ThreadTest6.java

60 lines
2.6 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package bunny.thread;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ThreadTest6 {
public static void main(String[] args) {
// 创建一个可缓存的线程池,该线程池的线程数量可以根据任务的需求进行自动调整。
// 当有新的任务提交时,如果有空闲线程,则立即执行;如果没有空闲线程,则创建新的线程。
// 当线程空闲一段时间后如果线程池中的线程数量超过了核心线程数默认为0则这些空闲线程将被终止。
try (ExecutorService pool = Executors.newCachedThreadPool()) {
// pool.submit();
// pool.execute();
// pool.awaitTermination();
// pool.invokeAll();
// pool.isShutdown();
// pool.isTerminated();
pool.shutdownNow();
// 优雅地关闭线程池。该方法会等待线程池中的所有任务执行完成后再关闭。
pool.shutdown();
}
// 创建一个固定大小的线程池,该线程池中的线程数量始终保持不变。
// 当有新的任务提交时,如果线程池中有空闲线程,则立即执行;
// 如果没有空闲线程,则任务将等待,直到有线程可用为止。
try (ExecutorService pool = Executors.newFixedThreadPool(4)) {
}
// 创建一个单线程的线程池,该线程池中只有一个工作线程。
// 所有提交的任务按照顺序执行,即使任务抛出异常也不会影响后续任务的执行。
try (ExecutorService pool = Executors.newSingleThreadExecutor()) {
}
// 创建一个固定大小的线程池,该线程池可以执行定时任务和周期性任务。
// 除了执行普通任务外,还可以使用 schedule() 和 scheduleAtFixedRate() 方法调度任务的执行。
try (ExecutorService pool = Executors.newScheduledThreadPool(4)) {
}
// 创建一个单线程的线程池,该线程池可以执行定时任务和周期性任务。
// 与 newScheduledThreadPool() 类似,但只有一个工作线程。
try (ExecutorService pool = Executors.newSingleThreadScheduledExecutor()) {
}
// 创建一个工作窃取线程池,该线程池基于 Fork/Join 框架。
// 它根据可用处理器的数量创建并行线程来执行任务,并且可以自动处理任务的分割和合并。
try (ExecutorService pool = Executors.newWorkStealingPool()) {
}
}
}