并发操作之——进程和线程间的调度算法下——线程之间的调度算法

并发操作

并发操作之——进程和线程间的调度算法下——线程之间的调度算法


并发操作之——进程和线程间的调度算法下——线程之间的调度算法


前言

<font color=#999AAA 并发操作之——进程和线程间的调度算法。


一、协同式线程调度

线程执行时间由线程本身来控制,线程把自己的工作执行完后,要主动通知系统切换到另外一个线程上.
优点: 实现简单,且切换操作对线程自己是可知的没有线程同步的问题.
缺点: 线程执行时间不可控制,如果有一个线程有问题,可能一直阻塞在那里.

协同式线程调度

二、抢占式线程调度

每个线程由系统来分配时间,线程的切换不由线程本身来决定(Java中,Thread.yield()可以让出执行时间,但无法获取执行时间)。线程执行时间系统可控,也不会有一个线程导致整个进程阻塞

Java线程调度就是抢占式调度,优先让可运行池中优先级高的线程占用CPU,如果可运行池中的线程优先级相同,那就随机选择一个线程

所以我们如果希望某些线程多分配一些时间,给一些线程少分配一些时间,可以通过设置线程优先级来完成。
JAVA的线程的优先级,以1到10的整数指定。当多个线程可以运行时,VM一般会运行最高优先级的线程(Thread.MIN_PRIORITY至Thread.MAX_PRIORITY)

在两线程同时处于就绪runnable状态时,优先级越高的线程越容易被系统选择执行。但是优先级并不是100%可以获得,只不过是机会更大而已。

wait是可以让出执行时间,notify后无法获取执行时间,随机等待队列里面获取而已

在这里插入图片描述


总结

线程之间的调度算法之抢占式调度算法和协同式调度算法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RobertTeacher

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值