简单的讲讲Java的线程的复用

我们都知道Java现在提供了很多线程池,我们可以通过线程池的 execute(Runnable run)方法轻松的复用线程,也用不着管这个线程是怎么被复用的。今天我突然想到一个问题,Java中的线程都是Thread,而Thread也没有提供说让我们可以同一个线程执行多个Runnable的方法,那线程是怎么复用的呢?

线程池原理

其实线程池的实现无非就是两点,一个任务队列,一个就是复用线程。
队列:
本身线程池就是一个线程,那么队列的入队,出队,维护这些都交给线程池来实现,这个实现也有点复杂编码起来也不是几行代码能说的完的,其实原理也是挺通俗的,想知道可以查查Java默认实现的那几个线程池分别是什么策略,
线程复用
我要做的笔记是线程是如何复用的,我们可以想象:当一个线程执行完成之后,要么就是销毁,而线程池的概念就是解决因为创建和销毁带来的高性能消耗,所以这里直接销毁是不合适的,所以就会将这个线程存起来用于下回执行别的任务。这时,当我们的线程执行完成之后,我们不销毁,我认为我可以先将它睡眠,所以调用Thread.sleep(一个时间),等待下次复用。

具体的伪代码实现:
首先,因为原生的Thread不能实现设置Runnable,所以我继承它封装了一层:
在这里插入图片描述
当我们要复用它的时候:在这里插入图片描述 初步感觉这样子实现得了,等有时间的时候再来验证一下,仅作记录。