thread.sleep有什么影响
答案:2 悬赏:70 手机版
解决时间 2021-02-27 10:01
- 提问者网友:星軌
- 2021-02-27 04:58
thread.sleep有什么影响
最佳答案
- 五星知识达人网友:蓝房子
- 2021-02-27 06:37
sleep()方法是属于线程本身的,直接调用Thread.sleep(毫秒数)就可以使用
sleep()主要是让当前线程进入休眠状态,不会释放锁,把时间片让给其他线程,等休眠时间结束,再继续执行。这里的再继续执行不是立马执行,也许并发时候,某一个线程优先级比较高,那么即使是休眠结束也不会执行,还得优先级高的先执行。
使用几个线程不用sleep()肯定可以运行啊!因为时间片在不停的轮转,你运行一会,我运行一会,轮流运行。。。
不是同步的线程获得锁是随机的而是获得时间片是随机的,synchronized处理锁机制,你好好看看吧!而且当指定优先级或有其他条件影响的时候,其实时间片也相当于不是随机的,必定优先级高的会先运行。
sleep()主要是让当前线程进入休眠状态,不会释放锁,把时间片让给其他线程,等休眠时间结束,再继续执行。这里的再继续执行不是立马执行,也许并发时候,某一个线程优先级比较高,那么即使是休眠结束也不会执行,还得优先级高的先执行。
使用几个线程不用sleep()肯定可以运行啊!因为时间片在不停的轮转,你运行一会,我运行一会,轮流运行。。。
不是同步的线程获得锁是随机的而是获得时间片是随机的,synchronized处理锁机制,你好好看看吧!而且当指定优先级或有其他条件影响的时候,其实时间片也相当于不是随机的,必定优先级高的会先运行。
全部回答
- 1楼网友:笑迎怀羞
- 2021-02-27 08:10
.net并没有放弃thtead.sleep,它的作用是挂起当进程指定的时间。而thread.suspend被标识为过时,即放弃了thread.suspend,放弃的原因是因为该挂起不能达到安全代码处挂起,可能导致无法唤醒,所以放弃了suspend,而继承保留thread.sleep。在目前.46的版本中仍然没有标识为放弃,难道你用的是vs 2015?在5.0版本中标识过时了么?
但由于多线程的引入,多数时间在多线程中会用到线程模式,但多线程中使用线程模式,那只是waithandle类的waitone方法或waitall或waitany等方法。以及autoresetevent等多线程类库的一些实现。尽管如此,只是要求在多线程程序中尽量使用类型的模式,并没有明确或暗示放弃thread.sleep。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯