Java项目中如何等待与唤醒线程

  介绍

这期内容当中小编将会给大家带来有关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项目中如何等待与唤醒线程