zoukankan      html  css  js  c++  java
  • 两线程交替打印单双数

    创建A,B两个线程交替打印1-100,A线程打印单数,B线程打印双数

    package com.advance.code.learn.day0226;
    
    import java.util.concurrent.locks.Condition;
    import java.util.concurrent.locks.ReentrantLock;
    
    /**
     * 两个线程交替打印 1-100的数
     */
    public class TurnedPrintThread {
    
        public static void main(String[] args) {
    
            PrinterHandler printerHandler = new PrinterHandler();
    
            new Thread(() -> {
                for (int i = 1; i <= 100; i += 2) {
                    printerHandler.printer(i, true);
                }
            }, "AAAAAA").start();
    
            new Thread(() -> {
                for (int i = 2; i <= 100; i += 2) {
                    printerHandler.printer(i, false);
                }
            }, "BBBBBB").start();
    
        }
    
    }
    
    class PrinterHandler{
        //用于标记当前线程 true是A线程  flag是B线程
        private boolean flag = true;
        private ReentrantLock lock = new ReentrantLock();
        Condition condition1 = lock.newCondition();
        Condition condition2 = lock.newCondition();
    
        public void printer(int num, boolean flagThread){
            lock.lock();
            try {
                while (flagThread != flag){
                    if(flagThread){
                        condition1.await();
                    }else{
                        condition2.await();
                    }
                }
    
                System.out.println(Thread.currentThread().getName() + "打印:	"+num);
    
                if(flagThread){
                    flag = false;
                    condition2.signal();
                }else{
                    flag = true;
                    condition1.signal();
                }
    
            }catch (Exception e){
                e.printStackTrace();
            }finally {
                lock.unlock();
            }
        }
    }
    
  • 相关阅读:
    android判断服务是否是运行状态
    Android调用OCR识别图像中的文字
    Java生成各种条形码
    android 实现摇一摇功能
    【读书笔记】Html5游戏开发
    SpeechLib 语音播报
    罗盘
    注释文档在线编辑及生成
    系统空闲时间判断&命名验证
    Asp.Net MVC中使用ACE模板之Jqgrid
  • 原文地址:https://www.cnblogs.com/advanceBlog/p/14460421.html
Copyright © 2011-2022 走看看