• 用两个线程,一个输出字母,一个输出数字,交替输出1A2B3C4D...26Z


    ------------------------------第一种实现 LockSupport的park和unpark方法(**重要1**)---------------------------------------------------------------

    package com.example.demo.wxyDemo;

    import java.util.concurrent.locks.LockSupport;

    /**
    * 用两个线程,一个输出字母,一个输出数字,交替输出1A2B3C4D...26Z
    */
    public class ThreadOrderSwitch {
    static Thread t1=null, t2=null;

    public static void main(String[] args) {
    char[] aI = "123456789".toCharArray();
    char[] aC = "ABCDEFGHI".toCharArray();

    t1 = new Thread(()->{
    for(char c:aI){
    System.out.print(c);
    LockSupport.unpark(t2);
    LockSupport.park();
    }
    });

    t2 = new Thread(()->{
    for(char c:aC){
    LockSupport.park();
    System.out.print(c);
    LockSupport.unpark(t1);
    }
    });

    t1.start();
    t2.start();
    }
    }

    打印结果:1A2B3C4D5E6F7G8H9I
    LockSupport是一个线程阻塞工具类,所有的方法都是静态方法,可以让线程在任意位置阻塞,当然阻塞之后肯定得有唤醒的方法。
    为什么叫park呢,park英文意思为停车。我们如果把Thread看成一辆车的话,park就是让车停下,unpark就是让车启动然后跑起来。
    类似的还可以用类似自旋锁原理的volatile 和 AtomicInteger

    自旋锁示例:原地打转,占用cpu,不放弃cpu,(执行时间短快)不经过操作系统即内核态
    相对重量级锁:

    atomicInteger

    ===========================使用阻塞队列操作ArrayBlockingQueue======take()和put()方法阻塞======================

    
    
    ================================**重点2**使用sychnorized,wait,notify方法实现(重要)=====================================

    运行结果:1A2B3C...    或者A1B2C3...  (任一结果不确定)
    循环完了执行notify是为了停止线程,两个交替运行的话,总有一个是wait状态,导致线程无法停止,需要唤醒让线程执行完毕。
    想要输出想要的1A2B3C...,可以使用:
    (1)countDownLatch,让想要线运行的线程执行输出后latch.countDown(),后运行的线程执行latch.await()
    (2)======================**重点3**===============================
    使用可重用锁ReenTranLook的创建两个条件condition,(ReenTranLook.newCondition()),可精确的在哪种条件下通知哪些线程运行(重点)

    
    
  • 相关阅读:
    C程序设计语言阅读笔记
    Leetcode: . 存在重复元素 III
    Leetcode : 存在重复元素 II
    Leetcode : 二叉搜索树结点最小距离
    Leetcode: 二叉树的最大深度
    Leetcode: 二叉树的最小深度
    精益创业 埃里克莱斯 读书笔记总结--2020年的第12/100本
    经营最重要的事 梅纳德韦伯 读书笔记总结--2020年的第11/100本
    《创业36条军规 孙陶然》精读 读书笔记总结----《创业必读书第5本》---建立认知:有哪些优秀的创业经验 第3本
    原则 瑞达利欧 读书笔记总结--2020年的第9/100本
  • 原文地址:https://www.cnblogs.com/weixy3/p/12900428.html
Copyright © 2020-2023  润新知