java wait notify使用实例,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的值来唤醒线程进而实行另一个方法。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值