线程核心原理
线程的调度与时间片
线程的调度模型目前主要分为两种:分时调度模型和抢占式调度模型。
分时调度模型:系统平均分配CPU的时间片,所有线程轮流占用CPU,即在时间片调度的分配上所有线程“人人平等”。
)抢占式调度模型:系统按照线程优先级分配CPU时间片。优先级高的线程优先分配CPU时间片,如果所有就绪线程的优先级相同,那么会随机选择一个,优先级高的线程获取的CPU时间片相对多一些。
由于目前大部分操作系统都是使用抢占式调度模型进行线程调度,Java的线程管理和调度是委托给操作系统完成的,与之相对应,Java的线程调度也是使用抢占式调度模型,因此Java的线程都有优先级
线程的优先级
在Thread类中有一个实例属性和两个实例方法,专门用于进行线程优先级相关的操作。与线程优先级相关的成员属性为:
private int priority;//该属性保存一个Thread实例的优先级,即1~10的值
线程的生命周期



线程的基本操作
Java线程的常用操作基本上都定义在Thread类中,包括一些重要的静态方法和线程实例方法。
线程名称的设置和获取
线程的sleep操作
线程的interrupt操作
一个线程什么时候可以退出呢?当然只有线程自己才能知道。所以,这里介绍一下Thread的interrupt()方法,此方法本质不是用来中断一个线程,而是将线程设置为中断状态。


线程的join操作



线程的daemon操作


线程状态总结


线程池




拒绝策略
