学习:1.先大纲,然后思路优先(适当的提出问题) 2.合理推测
完成上述需要知识,
为了熟悉线程池,提出一些问题
1.线程什么时候创建?
2.线程池主要做什么?
3.无任务执行处于什么状态?
4.提交一个任务,执行逻辑?
5.线程池怎样被销毁?
学习方式:查看ThreadPool.excute,注意下载源码,查看注释
回答问题:
1.线程在执行(excute方法)中,做系列判断;若当前ctl(当前线程数)小于corePoolSize或队列已满,则addWorker(一个worker就是一个工作线程)
2.线程池负责复用线程(减少线程的创建和销毁)和有序队列来处理并发任务(Runable)
3.由于线城池在启动第一个worker时会有个循环,所以如果不自己销毁线程池,那么始终处于running状态
4.小于corePoolSize加线程;否,则加队列;否,则尝试创建临时线程,若失败就执行拒绝策略.
5.调用shutdown方法,内部用Thread.interrupt中断线程
并发:充分发挥CPU多核的性能,并发处理问题