java中wait是什么意思

我们在线程的使用中,一些暂时不处理的线程要放在其他区域,会使用wait的方法让其进行等待。目的是为了让等待的线程不与其它线程有所冲突,等别的方法调用后,再启用wait方法的线程。下面我们就wait方法的说明、语法、参数、返回值、使用注意、实例带来全面的分析。

1.说明

调用wait()方法后,线程会放到等待池当中,等待池的线程是不会去竞争同步锁。只有调用了notify()或notifyAll()后等待池的线程才会开始去竞争锁

2.语法

publicfinalvoidwait()

3.参数

4.返回值

没有返回值。

5.使用注意

1)必须在synchronized 修饰的同步代码块中调用

2)会释放cpu资源和释放同步锁(类锁和对象锁)

3)调用wait()后必须调用notify()或notifyAll()后线程才会从等待池进入到锁池,当我们的线程竞争得到同步锁后就会重新进入绪状态等待cpu资源分配

4)是Object类的方法

6.实例

/**
*当前线程必须是该对象锁的拥有者
*
*@paramtimeout要等待的最长时间如果timeout为0,则必须被notify唤醒
*@throwsIllegalArgumentException如果超时值是负数,或者不在0-999999范围内
*@throwsIllegalMonitorStateException如果当前线程不是此对象锁的所有者
*@throwsInterruptedException如果当前线程等待通知之前或者正在等待通知时,任何线程中断了当前线程,抛出该异常并解除线程的中断状态
*/
publicfinalnativevoidwait(longtimeout)throwsInterruptedException;
/**
*@paramtimeout毫秒
*@paramnanos微毫秒
*/
publicfinalvoidwait(longtimeout,intnanos)throwsInterruptedException{
	if(timeout<0){
	thrownewIllegalArgumentException("timeoutvalueisnegative");
}
if(nanos<0||nanos>999999){
thrownewIllegalArgumentException(
"nanosecondtimeoutvalueoutofrange");
}
if(nanos>0){
timeout++;
}
wait(timeout);
}

publicfinalvoidwait()throwsInterruptedException{
wait(0);
}

原文来自:https://www.py.cn

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容