什么时候用java Thread的sleep方法,怎么判断使用时机?

好像即时使用几个线程有时候不用sleep也能运行···
2024-12-03 16:58:33
推荐回答(2个)
回答1:

sleep()方法是属于线程本身的,直接调用Thread.sleep(毫秒数)就可以使用
sleep()主要是让当前线程进入休眠状态,不会释放锁,把时间片让给其他线程,等休眠时间结束,再继续执行。这里的再继续执行不是立马执行,也许并发时候,某一个线程优先级比较高,那么即使是休眠结束也不会执行,还得优先级高的先执行。

使用几个线程不用sleep()肯定可以运行啊!因为时间片在不停的轮转,你运行一会,我运行一会,轮流运行。。。

不是同步的线程获得锁是随机的而是获得时间片是随机的,synchronized处理锁机制,你好好看看吧!而且当指定优先级或有其他条件影响的时候,其实时间片也相当于不是随机的,必定优先级高的会先运行。

回答2:

多线程异步的时候,当你要完成某个特定的需求的时候,可以用到,具体还要看完成什么功能,比如两个异步A,B,按理A,B是随机同时执行的,我的需求又要我先执行A一段时间,再执行B,这时候就可以SLEEP B一段时间