• java多线程编程之连续打印abc


    1. 使用  ReentrantLock

    package com.concurrent.demo;
    
    import java.util.concurrent.locks.Condition;
    import java.util.concurrent.locks.ReentrantLock;
    
    public class SyncPrinter implements Runnable {
    
        public static void main(String[] args) throws InterruptedException {
            ReentrantLock reentrantLock = new ReentrantLock();
    
            Condition conditionA = reentrantLock.newCondition();
            Condition conditionB = reentrantLock.newCondition();
            Condition conditionC = reentrantLock.newCondition();
    
            SyncPrinter printerA = new SyncPrinter(reentrantLock, conditionA, conditionB, "A");
            SyncPrinter printerB = new SyncPrinter(reentrantLock, conditionB, conditionC, "B");
            SyncPrinter printerC = new SyncPrinter(reentrantLock, conditionC, conditionA, "C");
    
            new Thread(printerA).start();
            new Thread(printerB).start();
            Thread.sleep(100);
            new Thread(printerC).start();
    
        }
    
        private ReentrantLock reentrantLock;
        private Condition thisCondition;
        private Condition nextCondition;
        private String printStr;
    
        public SyncPrinter(ReentrantLock reentrantLock, Condition thisCondition, Condition nextCondition, String printStr) {
            this.reentrantLock = reentrantLock;
            this.thisCondition = thisCondition;
            this.nextCondition = nextCondition;
            this.printStr = printStr;
        }
    
        public void run() {
            try {
                reentrantLock.lock();
                for (int i = 0; i < 10; i++) {
                    System.out.println(printStr);
                    nextCondition.signal();
                    if (i < 9) {
                        thisCondition.await();
                    }
                }
    
            } catch (InterruptedException e) {
                e.printStackTrace();
            } finally {
                reentrantLock.unlock();
            }
        }
    }
  • 相关阅读:
    AtCoder Grand Contest 015 C
    AtCoder Grand Contest 011 F
    AtCoder Regular Contest 076 E
    AtCoder Grand Contest 016 B
    AtCoder Grand Contest 010 F
    AtCoder Regular Contest 081 F
    AtCoder Grand Contest 018 D
    AtCoder Regular Contest 076 F
    yii2.0 如何按需加载并管理CSS样式及JS脚本
    ebay商品基本属性组合成数据表格式,可用上传到系统递交数据
  • 原文地址:https://www.cnblogs.com/newlangwen/p/12586971.html
Copyright © 2020-2023  润新知