wait()和sleep()的区别

sleep()和wait()的区别

都能阻塞线程。

Sleep()是Thread类方法,wait()是Object类方法

Sleep()释放CPU执行权,但不释放锁

Wait()释放CPU执行权,也释放同步锁,使得其他线程可以访问同步代码方法。

 

 

为什么wait(),notify()函数定义在Object中,而不是Thread中?

wait(),notify()函数是对对象的同步锁进行操作。

wait()会使当前线程进行等待,因为线程进入等待状态,线程会释放它持有的同步锁,否则其他线程获取不到同步锁无法运行。

负责唤醒等待线程的那个线程叫做唤醒线程,它只有获取了同步锁,并调用对象的notify()方法,才能唤醒等待的线程。

等待线程被唤醒也不能立即运行。它只有等唤醒线程释放了同步锁,等待线程才能获得锁,然后运行。

 

多线程如何进行信息交互

void notify() 唤醒在此对象监视器上等待的单个线程。

void notifyAll() 唤醒在此对象监视器上等待的所有线程。

void wait() 导致当前的线程等待,直到其他线程调用此对象的notify()方法或notifyAll()方法。

void wait(long timeout) 导致当前的线程等待,直到其他线程调用此对象的notify()方法或notifyAll()方法,或者超过指定的时间量。

void wait(long timeout, int nanos) 导致当前的线程等待,直到其他线程调用此对象的notify()方法或notifyAll()方法,或者其他某个线程中断当前线程,或者已超过某个实际时间量。

Java中如何实现代理机制(JDK、CGLIB)

JDK动态代理:代理类和目标类实现相同的接口,使用InvocationHandler接口

CGLIB动态代理:代理类是目标类的子类,用到MethodInterceptor接口。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值