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(" "); } }
  • 相关阅读:
    微信小程序用vant,dialog弹出框
    小程序太阳码 ,不发布也可以测试
    php ,通过password与salt共同来验证登录
    vscode 使用less开发微信小程序
    php命名规范
    61键 如何打波浪线
    php 循环使用
    记一次,物业费时间交集问题
    Mac拖拽文件
    python 支持中文
  • 原文地址:https://www.cnblogs.com/chenfx/p/13365532.html
Copyright © 2011-2022 走看看