「java线程池线程复用」threadlocal线程池复用
本篇文章给大家谈谈java线程池线程复用,以及threadlocal线程池复用对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
java 线程池是怎么复用线程的
线程重用的核心是,它把Thread.start()给屏蔽起来了(一定不要重复调用),然后它自己有一个Runnable.run(),循环在跑,跑的过程中不断检查我们是否有新加入的子Runnable对象,有就调一下我们的run(),其实就一个大run()把其它小run()#1,run()#2,...给串联起来了,基本原理就这么简单。
JDK代码节选
/**
* Main run loop
*/
public void run() {
try {
Runnable task = firstTask;
firstTask = null;
while (task != null || (task = getTask()) != null) {
runTask(task);//这里最终会调用task.run()
task = null;
}
} finally {
workerDone(this);
}
}
}
java线程只能被启动(Thread.start())一次,那么为什么线程池中的线程能被重复利用呢?
线程池包含多个实例化好的线程对象,需要使用时从池里取即可,避免重复创建对象开销。
调用start方法后对象没被销毁,重新返回池中
Java线程池中的核心线程是如何被重复利用的
因为线程池并不是重复利用一个线程实例,而是在池内每执行一个任务都用new
thread()得到一个新的线程实例。然后用再启动。
关于java线程池线程复用和threadlocal线程池复用的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。