线程基础知识
进程和线程
进程:
是进程实体(程序及其数据、进程控制块PCB)的运行过程,是系统进行资源分配和调度的一个独立单位。
线程:
轻量级进程,多个线程可共享进程资源,单个线程可独立调度,是操作系统可调度的最小单位。
线程基本概念
如何调度
java使用是抢占式调度,由系统来控制线程切换以及执行时间。(可通过设置线程优先级,使线程获得更多的执行时间,但实际上还是系统来控制的,优先级只相当于建议系统这样做)。PS java优先级(从低到高1-10)
线程的状态
NEW RUNNABLE WAITTING TIMED_WAITING BLOCKED TERMINATED
-
相互转换
- WAITTING 和 TIMED_WAITING 区别
-
WATTING
无限期等待 该状态下线程不会被CPU分配执行时间,等待被其他线程显式唤醒
Object.wait() Thread.join() LockSupport.park();
-
TIMED_WAITTING
该状态下线程也不会被CPU分配执行时间,但无需等待其他线程显式唤醒,在指定时间内自动被系统唤醒,也就是说系统对线程还持有监测。
Thread.sleep() 带有timeout的Object.wait()/Thread.join()
-
-
WAITTING 和 BLOCKED的区别
BLOCKED 主要由synchronized关键字实现,这种状态下的线程再等待其他线程释放锁
参考文献:
- 计算机操作系统(第四版) 汤小丹 梁红兵
- 深入理解java虚拟机 jvm高级特性与最佳实践(第二版) 周志明
- 实战java高并发程序设计 葛一鸣 郭超