软件编程
位置:首页>> 软件编程>> java编程>> Java多线程通信wait()和notify()代码实例

Java多线程通信wait()和notify()代码实例

作者:时光spring  发布时间:2022-09-27 12:12:11 

标签:Java,线程,通信,wait,notify

1.wait()方法和sleep()方法:

wait()方法在等待中释放锁;sleep()在等待的时候不会释放锁,抱着锁睡眠。

2.notify():

随机唤醒一个线程,将等待队列中的一个等待线程从等待队列中移到同步队列中。

代码如下


public class Demo_Print {
 public static void main(String[] args) {
   Print p = new Print();
   new Thread() {
     public void run() {
       while (true) {
         p.print1();
       }
     };
   }.start();

new Thread() {
     public void run() {
       while (true) {
         p.print2();
       }
     };
   }.start();
 }
}

class Print {
 int flag = 1;

public synchronized void print1() {
   if (flag != 1) {
     try {
       this.wait();
     } catch (InterruptedException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
     }
   }
   System.out.print("你");
   System.out.print("好");
   System.out.print("吗????????????");
   System.out.println();

flag = 2;
   this.notify();
 }

public synchronized void print2() {
   if (flag != 2) {
     try {
       this.wait();
     } catch (InterruptedException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
     }
   }
   System.out.print("我");
   System.out.print("好");
   System.out.println();

flag = 1;
   this.notify();
 }
}

在该案例中,实现一问一答的线程同步通信。当方法中开启了wait()方法后,通过改变flag的值来唤醒线程进而实行另一个方法。

来源:https://www.cnblogs.com/springa/p/12631483.html

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com