21xrx.com
2024-12-22 23:17:36 Sunday
登录
文章检索 我的文章 写文章
Java中的sleep方法和wait方法有什么区别?
2023-06-16 11:25:03 深夜i     --     --
Java sleep方法 wait方法 区别

在Java中,sleep()和wait()都可以用来控制线程的执行。但是它们之间也有一些区别。实际上, sleep()方法和wait()方法的目的和使用场景是不同的。下面我们来详细了解一下它们之间的不同之处。

首先,sleep()方法是Thread类的静态方法,通常用于暂停程序的执行。与此不同,wait()方法是由Object类定义的,用于让线程等待某个事件的发生。sleep()方法是以毫秒为单位暂停当前线程的执行,而wait()方法则暂停执行,直到在同一对象监视器中的其他线程调用了notify()方法或notifyAll()方法。此外,sleep()方法不会释放锁,而wait()方法则会释放实例锁。因此,如果你的代码需要等待某个事件的发生,那么你应该使用wait()方法而不是sleep()方法。

现在,我们来看一些示例代码,以更好地理解它们之间的差异:

// Java Thread Sleep Method Example

public class SleepExample {

  public static void main(String[] args) throws InterruptedException {

   System.out.println("Start!");

   Thread.sleep(2000);

   System.out.println("End!");

  }

}

// Java Object Wait Method Example

public class WaitExample {

  public static void main(String[] args) {

   Object lock = new Object();

   synchronized (lock) {

     try {

      System.out.println("Start!");

      lock.wait();

      System.out.println("End!");

     } catch (InterruptedException e) {

      e.printStackTrace();

     }

   }

  }

}

以上示例代码演示了如何使用sleep()和wait()方法。SleepExample类使用sleep()方法暂停了程序的执行2秒钟,然后打印出“End!”。WaitExample类使用wait()方法暂停了主线程,直到另一个线程显式地唤醒它,并打印出“End!”。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复