线程的调度和线程的同步

线程创建后会进入就绪状态,等待cpu的时间片轮到他就进入运行状态,如果线程需要访问io或者等待资源就会进入阻塞状态,那么在多线程竞争的情况下,cpu怎么选择下一个要运行的线程?这里就涉及线程的调度策略了,为了让每个线程都能被及时响应,cpu需要公平的快速的轮询每个线程同时有些线程喜欢优先被执行,那就需要提高优先级,有了优先级就会有了插队的情况,就会出现线程饥饿,操作系统是怎样平衡这个需求?

其实线程每次调用schedule函数那些没有被选中的线程优先级都会被增加一次,这样越久没有被宠幸的线程优先级就会越高,下一次就越容易被选上,线程之间是如何同步的?

比如司机需要等待售票员关门才能启动车辆,线程间通过信号量的方式进行同步,比如在内核级别就是通过pv操作来实现同步的,对应到java中就是通过synchronize 或者是lock support的park,unpark来实现同步

说到调度,线程调度操作系统是时间片轮询,怎么裂解jvm的抢占线程调度

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值