学习笔记,仅供自己参考,如有不对欢迎指正
1.线程的几种状态
-
创建状态
线程被创建,还没有执行start方法 -
可运行状态
被其他线程(比如main)调用start方法,此时线程随时可以被CPU调度执行 -
运行状态
线程获取CPU权限执行。warning:线程只能从就绪状态进入到运行状态。 -
阻塞状态
因为某种原因放弃CPU的使用权,暂停运行。直到再次进入可运行状态,才能被执行。一般分为三种情况:
1.等待阻塞 通过调用线程的wait()
方法,让线程等待某工作的完成。
2.同步阻塞 线程在获取synchronized
同步锁失败(因为锁被其他线程占用),它会进入同步阻塞状态。
3.其他阻塞 通过调用线程的sleep()或join()或发出了I/O请求时
,线程会进入到阻塞状态。当sleep()状态超时、join()等待线程终止或超时、或者I/O处理完毕时,线程重新转入就绪状态。 -
死亡状态
线程run()、main()
方法执行结束,或者因异常退出了run()方法
,则该线程结束生命周期。死亡的线程不可再次复生
2.线程池知识点
-
7个参数
参考 https://www.cnblogs.com/alex-xyl/p/12460679.html
1)corePollSize: 核心线程数。
2)maximumPoolSize: 最大线程数。
3)keepAliveTime 空闲线程存活时间
4)unit 空间线程存活时间单位
5)workQueue 工作队列
6)threadFactory 线程工厂
7)handler 拒绝策略 -
实现线程池中的任务按优先级执行
参考 https://www.cnblogs.com/Sinte-Beuve/p/12340634.html
替换线程池默认的阻塞队列为 PriorityBlockingQueue(优先级队列) -
线程池的设计用到了哪种设计思想
生产消费者模型 -
你是如何配置线程池的?核心线程数你一般是怎么配置的?
参考 https://www.cnblogs.com/gaopengpy/p/11989249.html
根据IO密集型和CPU密集型来配置
网友评论