java 开发 等待
时间: 2023-12-18 18:29:23 浏览: 33
在Java开发中,等待通常是指线程等待。线程等待可以通过以下两种方式实现:
1.使用Thread.sleep()方法使线程休眠一段时间,然后再继续执行。这种方式不会释放锁,因此在多线程并发的情况下,可能会导致死锁。
2.使用wait()方法使线程等待,直到其他线程调用notify()或notifyAll()方法唤醒它。这种方式会释放锁,因此在多线程并发的情况下,不会导致死锁。
下面是使用wait()方法实现线程等待的示例代码:
```java
public class WaitExample {
public static void main(String[] args) {
Object lock = new Object();
Thread thread1 = new Thread(new Runnable() {
@Override
public void run() {
synchronized (lock) {
try {
System.out.println("Thread 1 is waiting");
lock.wait();
System.out.println("Thread 1 is awake");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
Thread thread2 = new Thread(new Runnable() {
@Override
public void run() {
synchronized (lock) {
System.out.println("Thread 2 is running");
lock.notify();
}
}
});
thread1.start();
thread2.start();
}
}
```
在上面的代码中,我们创建了两个线程,一个线程等待,另一个线程唤醒等待的线程。当线程1执行lock.wait()方法时,它会释放锁并等待,直到线程2调用lock.notify()方法唤醒它。当线程1被唤醒后,它会重新获取锁并继续执行。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)