一、什么是工作线程?
Java线程池中的工作线程,指的是 Worker对象
1、Worker对象
Worker其实就是线程池中的一个 内部类 ,继承了 AQS ,实现了 Runnable
Q:Worker为什么要继承AQS?
A:目的是为了添加标识来判断当前工作线程是否可以被打断!
2、ThreadPoolExecutor.addWorker()
作用:添加一个Worker对象到线程池中
// Runnable:具体要执行的任务,可以为null
// boolean:true添加的是核心线程数 false添加的是最大线程数
private boolean addWorker(Runnable firstTask, boolean core) {}
3、ThreadPoolExecutor.execute()
线程池执行任务,实际就是调用了 ThreadPoolExecutor.execute()——>ThreadPoolExecutor.addWorker()——>Worker.run()——>ThreadPoolExecutor.runWorker()
二、工作线程是否可以被打断?
1、线程是不能中断的
2、线程是允许中断的
三、工作线程存到在哪个位置?
// 存储在了线程池的一个HashSet里
private final HashSet<Worker> workers = new HashSet<Worker>();