不积跬步无以至千里,后继才能薄发
定义:内核线程(Kernel-Level Thread,KLT):直接由操作系统内核支持的线程,由内核来完成线程切换
优势:实现依赖内核,实现简单
劣势:部分操作需要从用户态切换到内核态,开销较大
定义
优势
劣势
定义
协同式线程调度(Cooperative Threads-Scheduling)
定义:线程执行时间由线程自己决定
优点:实现简单
缺点:某一线程执行时间过长会导致系统崩溃
抢占式线程调度(Preemptive Thread-Scheduling)(Java线程调度)
定义:线程由系统分配执行时间
优点:每个线程都可以分配到cpu时间分片
缺点:需要保存现场,切换上下文时有额外的开销
新建(New):创建后还没有启动的线程处于这种状态
运行(Running):包括了操作系统线程状态中Running和Ready,就是说在这个状态的线程,可能在执行,也可能等待CPU分配执行时间
无限期等待(Waiting):处于这种状态的线程不会分配到CPU执行时间,需要被其他线程显式唤醒
限期等待(Timed Waiting):处于这个状态的线程不会被分配CPU执行时间,不过无须等待被其他线程显式唤醒,在一定时间后会由系统自动唤醒
阻塞(Blocked):线程被阻塞,线程在等待获取一个排它锁时,进入阻塞状态,在另一个线程放弃这个锁时,返回Running状态
结束(Terminated):线程已经结束执行