线程的调度

1.       Java提供一个线程调度程序来监控程序中启动后进入可运行状态的所有线程。线程调度程序按照线程的优先级决定应调度哪些线程来执行。

 

2.       多数线程的调度是抢占式的(即我想中断程序运行就中断,不需要和将被中断的程序协商)

a)         时间片方式(time slicing

b)        非时间片方式

 

3.       下面几种情况下,当前线程会放弃CPU

a)         线程调用了yield()sleep()方法主动放弃

b)        由于当前线程进行I/O访问,外存读写,等待用户输入等操作,导致线程阻塞

c)        为等候一个条件变量,线程调用wait()方法

d)        抢先式系统下,有高优先级的线程参与调度;时间片方式下,当前时间片用完,有同优先级的线程参与调度

 

4.       Java至少有两个线程:主线程、垃圾收集线程

多线程的运行模式有协作式和抢占式。

协作式:主动让出时间片,要加sleep提高CPU利用,否则一直占用CPU

抢占式:CPU分配时间片,不加sleep会提高分配到CPU资源的机会

一般在多线程中适当sleep,哪怕很短,因为如在协作式系统中,线程不会让出CPU,如有线程是高速设备的运行,而其它设备有IO等设备的操作运行。而线程执行机会是均等的,如不加sleep,及可能的情况是:高速设备的线程独占CPU

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值