线程池的原理
本质就是利用无限循环run的thread➕BlockingQueue手写阻塞队列
2020.12.6 补充
务必注意线程池的有效shutdown机制,这关系到线程池被有效回收,具体可见:匿名野线程池导致oom
2021.3.9
本例子中,当没有任务时,并没有用BlockingQueue.take阻塞(不过它也没有用BlockingQueue,而是用了个List),而是List.size()==0 Object.wait()(本类ThreadPool继承Object类,自然有wait方法,用自己这个对象来锁)