「java线程池线程复用」threadlocal线程池复用

博主:adminadmin 2023-01-16 09:27:05 559

本篇文章给大家谈谈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线程池复用的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。