⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sleepandwait.java

📁 介绍线程的使用方法
💻 JAVA
字号:
package thread.lock;

/**
 * <p>Title: </p>
 *
 * <p>Description: wait方法与sleep方法的使用和区别</p>
 *
 * <p>Copyright: Copyright (c) 2004</p>
 *
 * <p>Company: netsky</p>
 *
 * @author wdz123@hotmail.com
 * @version 1.0
 */
public class SleepAndWait {
  private Object lock;
  private static  Object staticLock =new Object();
  public SleepAndWait() {
  }

  /**
   * 在一个方法中使用sleep方法。只是让cpu停止运行当前代码若干时间
   * **/
  public void doItA() {
    //处理一堆事情
    //....

    //当前线程睡眠2秒钟,和对象锁、类锁是没有关联的,不存在锁的释放,获取的事情
    try {
      Thread.sleep(2000);
    }
    catch (Exception ex) {

    }

    //处理另外一堆事情
    //....
  }

  /***
   * 在同步方法/代码块中,sleep方法的使用。Thread.sleep方法本身是和锁的获取释放没有任何关系的
   * **/
  public void doItB() {
    synchronized (lock) {
      //处理一堆事情
      //....

      //当前线程睡眠2秒钟,但是这期间,持有的对象锁(lock)是不会释放的
      try {
        Thread.sleep(2000);
      }
      catch (Exception ex) {

      }

      //处理另外一堆事情
      //....

    }
  }

  /**
   * 使用wait方法.这个方法和doItD方法效果一样
   * **/
  public void doItC() {
    synchronized (lock) {
      //处理一堆事情
      //....

      //当前代码释放持有的对象锁,然后停止运行2秒钟,
      try {
        wait(2000);
      }
      catch (Exception ex) {

      }
      //当程序返回运行wait方法结束后,重新获取对象锁

      ///处理其他一些事情
      //......
    }
  }

  /**
   * doItC同样效果的代码
   * **/
  public void doItD() {
    synchronized (lock) {
      //处理一堆事情
      //....
    }
    //当前代码释放持有的对象锁,然后停止运行2秒钟,
    try {
      Thread.sleep(2000);
       notify();
    }
    catch (Exception ex) {

    }

    //当程序重新获取对象锁
    synchronized (lock) {
      ///处理其他一些事情
      //......
    }
  }
  /**
   * 在类方法中使用wait方法
   * **/
  public static  void  doItE(){
    synchronized(staticLock){
      //处理一堆事情
      //....
      try {
        staticLock.wait();
      }
      catch (Exception ex) {

      }

      ///处理其他一些事情
      //......

    }
  }
  public static void main(String[] args) {
    SleepAndWait sleepandwait = new SleepAndWait();

  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -