介绍
这期内容当中小编将会给大家带来有关Java项目中如何等待与唤醒线程,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
DEMO1: wait()与notify ()
{公共类测试 静态类ThreadOne延伸线{ 私人调mCallback; @Override 公共空间run () { 工作(); 如果(mCallback !=null) { mCallback.onResult(假); } }//耗时3 s 私人空间工作(){ System.out.println (“;正在查询数据库1“); 长时间的开始时间=System.currentTimeMillis (); 而(真){ 如果(System.currentTimeMillis()——开始时间& lt;3000){ 继续; } 打破; } } 公共空间setCallback(回调){ mCallback=回调; } 公共接口回调{ 空白>——ThreadTest进入等待— 正在查询数据库1 查询数据库1结束,:无数据 ——ThreadTest结束等待— 根据结果继续做其他事情
<强>注意:强>
使用wait()和notify()必须在获得同步锁后才能调用,若直接调用会报. lang。IllegalMonitorStateException错误,因为状态由同步锁保护。
等()不同于睡眠()的()会是等待释放同步锁。
因为wait()和notify()是基于同步锁实现的,每个对象都有自己的同步锁,所以wait()和notify()是对象的方法,而不是线程。
以及接下来,wait()与notifyAll ():
{公共类测试 私有静态对象mLock=新对象(); 静态类MyThread延伸线{ 字符串mName; 回调mCallback; 公共MyThread(字符串名称){ mName=名称; } @Override 公共空间run () { 工作(); 如果(mCallback !=null) { mCallback.onResult(假); } }//耗时3 s 私人空间工作(){ system . out。println (mName +“;等待“); 尝试{ 同步(mLock) { mLock.wait (); } }捕捉(InterruptedException e) { e.printStackTrace (); } } 公共空间setCallback(回调){ mCallback=回调; } 公共接口回调{ 空白>上述就是小编为大家分享的Java项目中如何等待与唤醒线程了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。Java项目中如何等待与唤醒线程