java多线程基础(1)-由调度方式引入线程各种运行状态
来源:互联网 发布:办公室自动化软件 编辑:程序博客网 时间:2024/06/11 09:48
线程的调度方式
所有java虚拟机都有一个线程调度器,用来确定哪个时刻运行哪个线程。
它主要包含2种调度器:抢占式(preemptive)和协作式(cooperative).
(1)抢占式(重点):
抢占式调度器确定一个线程正常轮到这个线程的cpu时间用完时,会暂停这个线程,将cpu控制权交给轮到时间的另外一个线程。目前大多数虚拟机都使 用这种方式的线程调度器。
(2)协作式:
协作式线程调度器在将cpu控制权交给其他线程钱,会等待正在运行的线程自己去暂停,然后才可以交给另外一个线程。一些早期或者特殊用途的虚拟机 可能会使用这种方式。
两者区别:
与使用抢占式线程调度的虚拟机相比,使用协作式线程调度器的虚拟机更容易使线程陷入“”饥饿“”,因为一个该优先级的非协作线程会独占整个 CPU。
结论:所有java虚拟机都确保在不同的优先级之间使用抢占式线程调度,也就是说,当一个优先级低的线程正在裕兴,而一个高优先级线程准备运行时,虚拟 机或早或晚暂停这个优先级低的线程,让高优先级来运行。这样高优先级线程就抢占了低优先级线程。
为了能让其他线程有运行的机会,一个线程有10中方式可以暂停或者指示它准备暂停而让其他线程运行,包括(下面会重点介绍其中的集中):
(1)可以对IO阻塞 (2)可以对同步对象阻塞 (3)可以放弃执行当前线程 (4)可以休眠当前线程 (5)可以连接另外一个线程 (6) 可以等待另外一个线程(7)可以结束当前线程 (8)可以被更高优先级线程抢占 (9)可以被挂起 (10)可以停止当前线程.
接下来会详细介绍他们
- java多线程基础(1)-由调度方式引入线程各种运行状态
- java多线程基础(2)-调度方式之暂停当前线程方式1-阻塞
- java多线程基础(4)-调度方式之暂停当前线程方式3-线程休眠(sleep)
- java多线程基础(5)-调度方式之暂停当前线程方式4-连接线程(join)
- Java 多线程基础-线程状态
- Java基础:多线程(1)--线程的概述、创建线程的方式、线程的多种状态、线程常用的方法
- java多线程基础(3)-调度方式之暂停当前线程方式2-放弃
- java多线程基础(6)-调度方式之暂停当前线程方式5-等待(wait)
- java多线程之线程运行状态
- java线程调度方式以及线程的状态转换讲解
- 深入理解JVM-Java线程-实现方式,线程调度,状态
- java 多线程基础--各种状态及状态之间的转换
- java 多线程基础--各种状态及状态之间的转换
- java多线程-线程运行状态-获取线程对象以及名称
- java多线程运行状态
- Java多线程:线程状态
- java多线程-线程状态
- Java多线程:线程状态
- 1008-H专题四
- 程序员应该如何学习英语
- S5PC210的UBOOT移植过程
- How web servers work
- 杂谈社
- java多线程基础(1)-由调度方式引入线程各种运行状态
- 如果不是因为你,还有谁值得
- 用Unity开发Flappy Bird
- swarm-run.sh
- 关于数组去重的小案例介绍
- 差速锁与限滑差速器的区别
- printf实现
- 剑指offer----树的子结构----java实现
- c/c++使用指针做函数返回值和指针作函数参数问题