Java线程等待用法实例分析

 更新时间:2018年09月07日 14:32:21   作者:shuair  
这篇文章主要介绍了Java线程等待用法,结合实例形式分析了obj.wait()实现线程等待相关原理与操作技巧,需要的朋友可以参考下

本文实例讲述了Java线程等待用法。分享给大家供大家参考,具体如下:

线程等待

public class Hello {
  public static void main(String[] args) {
    A a = new A();
    new Thread(new MyRun(a)).start();
    new Thread(new MyRun1(a)).start();
  }
}
class MyRun implements Runnable {
  private A a;
  public MyRun(A a) {
    this.a = a;
  }
  @Override
  public void run() {
    synchronized (a) {
      a.setTitle("hello");
      try {
        a.wait();
      } catch (InterruptedException e) {
        e.printStackTrace();
      }
      a.setNumber(12);
      System.out.println(a);
    }
  }
}
class MyRun1 implements Runnable {
  private A a;
  public MyRun1(A a) {
    this.a = a;
  }
  @Override
  public void run() {
    synchronized (a) {
      a.setTitle("world");
      a.setNumber(24);
      a.notifyAll();
      System.out.println(a);
    }
  }
}
class A {
  private String title;
  private Integer number;
  public String getTitle() {
    return title;
  }
  public void setTitle(String title) {
    this.title = title;
  }
  public Integer getNumber() {
    return number;
  }
  public void setNumber(Integer number) {
    this.number = number;
  }
  @Override
  public String toString() {
    return "A{" +
        "title='" + title + '\'' +
        ", number=" + number +
        '}';
  }
}

运行输出:

A{title='world', number=24}
A{title='world', number=12}

线程等待,obj.wait(),会释放当前的锁,对象的普通方法,obj.wait(超时时间),表示指定时间后可以自动唤醒

线程唤醒,obj.notify(),唤醒一个线程,obj.notifyAll(),唤醒所以线程,obj需要和线程等待的对象一致。

wait和sleep的区别

个人认为:sleep就是一种延缓代码执行的方法,wait是有关多线程的一些高级操作。

更多java相关内容感兴趣的读者可查看本站专题:《Java进程与线程操作技巧总结》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总

希望本文所述对大家java程序设计有所帮助。

相关文章

  • Java语言class类用法及泛化(详解)

    Java语言class类用法及泛化(详解)

    这篇文章主要介绍了Java语言class类用法及泛化(详解),大家都知道Java程序在运行过程中,对所有的对象今夕类型标识,也就是RTTI。这项信息记录了每个对象所属的类,需要的朋友可以参考下
    2015-07-07
  • java 自己实现DataSource实现实例

    java 自己实现DataSource实现实例

    这篇文章主要介绍了java 自己实现DataSource实现代码的相关资料,需要的朋友可以参考下
    2017-05-05
  • java 装饰模式(Decorator Pattern)详解及实例代码

    java 装饰模式(Decorator Pattern)详解及实例代码

    装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装
    2016-10-10
  • 浅析Mybatis 在CS程序中的应用

    浅析Mybatis 在CS程序中的应用

    如果是自己用的Mybatis,不需要考虑对配置文件加密,如果不是,那就需要考虑加密,这篇文章主要讲如何配置CS的Mybatis
    2013-07-07
  • Activiti开发环境的配置

    Activiti开发环境的配置

    本篇文章主要内容介绍了Activiti开发环境的配置,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • JDK1.8中ConcurrentHashMap中computeIfAbsent死循环bug问题

    JDK1.8中ConcurrentHashMap中computeIfAbsent死循环bug问题

    这篇文章主要介绍了JDK1.8中ConcurrentHashMap中computeIfAbsent死循环bug,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • 实例讲解Java中的synchronized

    实例讲解Java中的synchronized

    这篇文章主要介绍了Java中synchronized的使用方法,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • 浅谈HashMap、HashTable的key和value是否可为null

    浅谈HashMap、HashTable的key和value是否可为null

    这篇文章主要介绍了浅谈HashMap、HashTable的key和value是否可为null,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • java实现猜数字小游戏(Swing版)

    java实现猜数字小游戏(Swing版)

    这篇文章主要介绍了java实现猜数字小游戏,Swing编程版的猜数字游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-05-05
  • Java基于swing实现的弹球游戏代码

    Java基于swing实现的弹球游戏代码

    这篇文章主要介绍了Java基于swing实现的弹球游戏代码,包含了窗体界面设计与游戏的逻辑功能处理,具有不错的参考借鉴价值,需要的朋友可以参考下
    2014-11-11

最新评论