zoukankan      html  css  js  c++  java
  • 锁绑定多个条件

    多线程之间按顺序调用,实现A →B→C三个线程启动,要求如下:

    AA 打印2次,BB 打印3次,CC打印4次,按顺序连续打印2轮。

    class ShareResource {
    private int number = 1;
    private Lock lock = new ReentrantLock();
    private Condition c1 = lock.newCondition();
    private Condition c2 = lock.newCondition();
    private Condition c3 = lock.newCondition();

    public void print2() {
    lock.lock();
    try {
    while (number != 1) {
    c1.await();
    }
    for(int i = 1; i <= 2; i++) {
    System.out.println(Thread.currentThread().getName()+" " + i);
    }
    number = 2;
    c2.signal();
    } catch (Exception e) {
    e.printStackTrace();
    } finally {
    lock.unlock();
    }
    }

    public void print3() {
    lock.lock();
    try {
    while (number != 2) {
    c2.await();
    }
    for(int i = 1; i <= 3; i++) {
    System.out.println(Thread.currentThread().getName()+" " + i);
    }
    number = 3;
    c3.signal();
    } catch (Exception e) {
    e.printStackTrace();
    } finally {
    lock.unlock();
    }
    }

    public void print4() {
    lock.lock();
    try {
    while (number != 3) {
    c3.await();
    }
    for(int i = 1; i <= 4; i++) {
    System.out.println(Thread.currentThread().getName()+" " + i);
    }
    number = 1;
    c1.signal();
    } catch (Exception e) {
    e.printStackTrace();
    } finally {
    lock.unlock();
    }
    }
    }

    public class SyncAndReentrantLockDemo {
    public static void main(String[ ]args) {
    ShareResource shareResource = new ShareResource();
    new Thread(() ->{
    for(int i = 1; i <= 2;i++ ) {
    shareResource.print2();
    }
    },"AA").start();
    new Thread(() ->{
    for(int i = 1; i <= 2;i++ ) {
    shareResource.print3();
    }
    },"BB").start();
    new Thread(() ->{
    for(int i = 1; i <= 2;i++ ) {
    shareResource.print4();
    }
    },"CC").start();

    }
    }
    运行结果见下图:

  • 相关阅读:
    百度打不开
    欢迎大家来到华网科技
    可扩展消息出席协议:核心 RFC 3920
    谈网站的黏度
    手机游戏沙龙7月11日谈话记录
    基于开源软件做个和GTalk聊天的小命令行程序
    WAP网站推广
    算法的魅力
    JSP技术在WAP开发中的应用
    在J2ME实现UTF8转换为Unicode编码的方法
  • 原文地址:https://www.cnblogs.com/liuyi13535496566/p/12153825.html
Copyright © 2011-2022 走看看