线程的生命周期
线程的创建时间、线程的执行时间、线程的销毁时间
线程三大主要开销
- Java 的线程模型是基于操作系统原生线程模型实现的,即是基于内核线程实现的;线程的创建,析构与同步都需要进行系统调用,在用户态和内核态切换开销大;
- 每个线程都需要一个内核线程的支持,也就会消耗一定的内核栈空间,故能创建的线程数是有限的;
- 若线程数量过多,则会导致频繁的上下文切换;
线程池提交任务与执行任务
线程池创建
注
- 阻塞队列一定是要有界的,否则会导致拒绝策略失效
线程池提交任务
// 方式一:execute 方法(无返回值、无法捕获异常)
public void execute(Runnable command) {
}
// 方式二:ExecutorService 中 submit 的三个方法(有返回值、可以捕获异常)
<T> Future<T> submit(Callable<T> task);
<T> Future<T> submit(Runnable task, T result);
Future<?> submit(Runnable task);
参考文章
【1】https://mp.weixin.qq.com/s/smfDcR-fjSlbvbvBXp1WMA
标签:Runnable,submit,task,Future,线程,内核 From: https://www.cnblogs.com/ReturnOfTheKing/p/17988619