notify notifyall sleep join wait 方法解释

wait方法表示当前线程等待状态,一般可以用在syn代码块的中间部分,被唤醒之后执行后面的代码

而notifyall和notify 一般被放在 syn代码块的最后

1.线程休眠sleep();:线程有优先级,但是我们可以用此方法人为的改变它们的优先级,让线程暂停,它其他线程获得分配空间。 
用法:Thread.sleep(2000);//休眠两秒 
2.线程让步yield();就是让出自己的分配空间给其他线程,那么问题来了,让步多久呢?如果有两条线程的话,是不是让步到另外一条线程执行完呢?经测试,不是让另外的线程执行,让步时间是不确定的; 
注意:当某个线程调用yield()方法之后,只有与当前线程优先级形同或者更高的才能获得执行机会。 
用法:一般都是指定条件,如if(i==10){Thread.yield();} 
3.线程插队join():当某个程序调用其他线程的join()时,调用线程将会阻塞,直到插入的线程运行完毕,才运行该线程,如main线程中for(int i = 0; i < 100; i++){if(i == 2){t.join();}},当i等于2时,线程t将执行完毕再执行main中余下的 i= 3 i=4 …… 
用法:一般都是指定条件,如if(i==10){t.join();} 注意插队肯定是在别的线程中插别人的队,不可能在自己的线程中写join(); 如 :t线程中写t.join();,这种方法是不正确的。 
4.wait():当前线程放弃同步锁进入等待状态,直到其他线程进入此同步锁notify()或notifyAll()唤醒线程为止。 
5.notify():唤醒锁上等待的第一个调用wait()方法的线程。 
6.notifyAll():唤醒同步锁上调用wait()的所有线程。 
注意:wait()、notify()、notifyAll()必须是同步锁对象。 
wait()、notify()、notifyAll()方法用法
--------------------- 
作者:林雷qdda 
来源:CSDN 
原文:https://blog.csdn.net/qq_18581651/article/details/49534333 
版权声明:本文为博主原创文章,转载请附上博文链接!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值