java notify()、 notifyAll()、 wait()、sleep()、yield()、join()方法学习

notify()、notifyAll()、wait()方法 都是Object类中的方法,而且都被定义为native final的,因此不可以被重写,并且这三个方法都只能在同步代码块或者方法中使用
1、wait(): 调用某个对象的wait方法可以使当前线程 立即进入阻塞状态而不继续往下执行代码,前提是 此线程必须拥有此对象的锁
2、notify(): 调用某个对象的的notify方法可以唤醒一个正在等待此对象的锁的线程 ,但是不立即释放锁,而是执行完synchronize包含的所有代码,再释放锁 ,如果有多个线程在等待此对象的锁,则只能唤醒他们中的一个。
3、、notifyAll():调用某个对象的notifyAll方法,可以唤醒所有在等待此对象锁的线程。
当调用某个对象的notify或者是notifyAll方法,可以唤醒一个或者多个等待此对象的锁的线程,但并不是立刻释放锁,而是当此线程执行完这个同步代码块或者方法后,才会释放锁。其他等待此对象的线程中的一个线程才有机会获得到锁。
sleep(long millis)、join()、yield()方法
1、sleep(long millis) 表示当前线程休眠long millis的时间,并且当前线程如果占有synchronized锁时,不会释放synchronized锁。

2、join()方法其实是基于wait方法实现的,因此在调用join 方法时,将和wait方法一样释放锁。



3、yield()方法: yield()只是使当前线程重新回到可执行状态,所以执行yield()的线程有可能在进入到可执行状态后马上又被执行,yield()只能使同优先级或更高优先级的线程有执行的机会。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值