java线程等待与notify方法应用

   2024-10-07 6080
核心提示:在Java中,可以使用wait()和notify()方法实现线程的等待和唤醒操作。这两个方法必须在同步代码块中使用,通常与synchronized关键

在Java中,可以使用wait()和notify()方法实现线程的等待和唤醒操作。这两个方法必须在同步代码块中使用,通常与synchronized关键字一起使用。

下面是一个简单的示例,演示如何使用wait()和notify()方法实现线程之间的通信:

public class WaitNotifyExample {    public static void main(String[] args) {        final Object lock = new Object();                Thread t1 = new Thread(() -> {            synchronized(lock) {                System.out.println("Thread 1 is waiting...");                try {                    lock.wait(); // 线程1等待                } catch (InterruptedException e) {                    e.printStackTrace();                }                System.out.println("Thread 1 is notified!");            }        });                Thread t2 = new Thread(() -> {            synchronized(lock) {                System.out.println("Thread 2 is notifying...");                lock.notify(); // 唤醒线程1            }        });                t1.start();        t2.start();    }}

在上面的示例中,线程1在同步代码块中调用wait()方法进行等待,线程2在同步代码块中调用notify()方法唤醒线程1。当线程2调用notify()方法时,线程1会被唤醒并继续执行。

需要注意的是,wait()和notify()方法必须在同步代码块中使用,否则会抛出IllegalMonitorStateException异常。另外,wait()方法会释放对象锁,而notify()方法不会释放对象锁,所以在使用时要谨慎确保线程安全。

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式网站留言    |  赣ICP备2021007278号