线程的调度

线程的调度:java虚拟机会按照特定的机制为程序中每个线程分配CPU的使用权,这种机制被称为线程的调度。

线程的调度有两种模型:①分时调度模型②抢占式调度模型

分时调度模型:让所有线程轮流获得CPU的使用权,并且平均分配每个线程占用的CPU的时间片。

抢占式调度模型;让可运行池中优先级高的线程优先占用CPU,而对于优先级相同的线程,随机选择一个线程使其占用CPU,当它丢失了CPU的使用权后,再随机选择其他线程获取CPU的使用权。

java虚拟机默认采用抢占式调度模型。

线程的优先级:在应用程序中,如果要对线程进行调度,最直接的方式就是设置线程的优先级。优先级越高的线程获得CPU执行的机会越大,而优先级越低的线程获得CPU执行的机会越小。线程的优先级用1~10之间的整数来标识,数字越大优先级越高。

线程休眠:人为控制线程,使正在执行的线程暂停,将CPU让给别的线程,这时可以使用sleep(long millis),该方法可以让当前正在执行的线程暂停一段时间,进入休眠等待状态,当休眠结束后,线程会返回到就绪状态,而不是立即开始运行。

线程让步:线程让步通过yield()方法来实现,该方法与sleep(long millis)方法有点类似,都可以让当前正在运行的线程暂停,区别在于yield()方法不会阻塞该线程,它只是将线程转换成就绪状态,让系统的调度重新调度一次。当某个线程调用yield()方法之后,只有与当前线程优先级相同或者更高的线程才能获得执行的机会。

线程插队:现实中经常遇到 “插队情况”,同样在Thread类中提供了一个join()方法来实现这个“功能”。当在某个先线程中调用其他线程join()方法时,调用的线程将被阻塞,直到join()方法加入的线程执行完后它才会继续运行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值