zoukankan      html  css  js  c++  java
  • 三个线程之间的通信

    //使用while循环,当线程1执行结束后唤醒其他所有线程并释放锁,线程1和线程2和线程3争抢锁,需要确保线程2争取到锁,假设线程3和线程1抢到锁则进入waiting状态。依次类推。。。。。
    public
    class Demo { static int flag = 1; static Object ob = new Object(); public static void main(String[] args) { new Thread(new Runnable() { @Override public void run() { while (true) { synchronized (ob) { while (flag != 1) { try { ob.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } method1(); flag = 2; ob.notifyAll(); } } } }).start(); new Thread() { @Override public void run() { while (true) { synchronized (ob) { while (flag != 2) { try { ob.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } method2(); flag = 3; ob.notifyAll(); } } } }.start(); new Thread() { @Override public void run() { while (true) { synchronized (ob) { while (flag != 3) { try { ob.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } method3(); flag = 1; ob.notifyAll(); } } } }.start(); } public static void method1(){ System.out.print("a"); System.out.print("b"); System.out.print("c"); System.out.print("d"); System.out.println(" "); } public static void method2(){ System.out.print("A"); System.out.print("B"); System.out.print("C"); System.out.print("D"); System.out.println(" "); } public static void method3(){ System.out.print("1"); System.out.print("2"); System.out.print("3"); System.out.print("4"); System.out.println(" "); } }
  • 相关阅读:
    PHP、asp、aspx、JSP一句话
    Linux 修改时区(PDT修改为CST)
    m0n0防火墙安装配置方法
    kali 使用John破解zip压缩包的密码
    Linux 挂载windows共享文件夹
    博客园添加粒子特效
    wpscan 更新超时报错
    kali 攻击wordpress + trunkey linux wordpress 安装方法
    Kali和Metasploitable2的网络配置
    设计模式之观察者
  • 原文地址:https://www.cnblogs.com/chenfx/p/13365532.html
Copyright © 2011-2022 走看看