前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >线程优先级

线程优先级

作者头像
端碗吹水
发布2020-09-23 10:36:43
8950
发布2020-09-23 10:36:43
举报

线程优先级:

线程在同时争抢cpu资源的时候,如果没有设置优先级执行顺序是比较乱的。如果设置了优先级则当线程碰撞在一起的时候,优先级高的就会先执行。

不设置优先级代码示例:

b17b7cf1d72b3afeb91b40394274c099.png
b17b7cf1d72b3afeb91b40394274c099.png

设置优先级代码示例:

45a2935acf1ab2849d444a6dee9affdc.png
45a2935acf1ab2849d444a6dee9affdc.png

线程的优先级只有在线程碰撞在一起的时候才能看出效果,需要在执行次数较多的情况下就能明显看出来。执行次数少比较难看出效果,因为线程碰撞到一起的几率比较小。

在实现接口来创建线程的方式中,不能直接拿到max和min值,需要用数字代替或者用Thread类调用max和min值。数字10代表max,数字1代表min。

  代码示例:

338575ab195056494838f77c9670d2a6.png
338575ab195056494838f77c9670d2a6.png

wait方法:

wait方法是让线程进入等待状态,wait方法的参数里可以设置等待的时间,设置了等待时间后,只要超过设置的时间就会解除等待状态继续往下执行和sleep有点相似之处,不过进入wait的等待状态,被激活不会抛异常就是了。但是如果不设置等待时间的话,则会无限制的等待下去,也就是会进入无时间等待状态。

notify方法:

notify方法是用来激活进入等待状态的线程,此方法只能激活最开始进入等待状态的那个线程。

notifyAll方法:

notifyAll方法也是用来激活进入等待状态的线程,不过此方法能够激活所有进入等待状态的线程。

线程应用例题之买馒头:

想要买馒头首先需要消费者、店铺、还有做馒头的厨子,所以我们需要三个类,其中厨子和消费者是线程,店铺则是对象。厨子要做馒头,但是这个厨子有点懒做完馒头就去睡觉了,但是不工作会被叫醒的。店铺里有将厨子做好的馒头添加到店铺里的功能,还有提供消费者购买的功能。消费者则只需要一个劲的购买和激活线程就可以了。

  厨子类:

0188e094434f56a69bd52eb2b82ba25e.png
0188e094434f56a69bd52eb2b82ba25e.png

店铺类:

e7258b440e9c91c7de6c59226a6e212e.png
e7258b440e9c91c7de6c59226a6e212e.png

消费者类:

69f73a77b1a1cd71d8a4e599f959a0d2.png
69f73a77b1a1cd71d8a4e599f959a0d2.png

运行结果:

c4a9f70b40fbbf8418739c89744b5da8.png
c4a9f70b40fbbf8418739c89744b5da8.png
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-10-27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档