• ReentrantLock 公平锁和非公平锁。


    1. import java.util.concurrent.locks.ReentrantLock;
    2. public class Ticket {
    3. private int number = 50;
    4. ReentrantLock lock = new ReentrantLock(true);
    5. public void sale(){
    6. lock.lock();
    7. try{
    8. if(number >0){
    9. System.out.println(Thread.currentThread().getName()+"卖出单"+(number--)+ "还剩下"+number);
    10. }
    11. }
    12. finally {
    13. lock.unlock();
    14. }
    15. }
    16. public static void main(String[] args) {
    17. Ticket ticket = new Ticket();
    18. new Thread(()->{
    19. for (int i = 0; i < 55; i++) {
    20. ticket.sale();
    21. }
    22. },"a").start();
    23. new Thread(()->{
    24. for (int i = 0; i < 55; i++) {
    25. ticket.sale();
    26. }
    27. },"b").start();
    28. new Thread(()->{
    29. for (int i = 0; i < 55; i++) {
    30. ticket.sale();
    31. }
    32. },"c").start();
    33. }
    34. }

    买票程序

      ReentrantLock lock = new ReentrantLock(true); 公平锁

    a卖出单50还剩下49
    b卖出单49还剩下48
    c卖出单48还剩下47
    a卖出单47还剩下46
    b卖出单46还剩下45
    c卖出单45还剩下44
    a卖出单44还剩下43
    b卖出单43还剩下42
    c卖出单42还剩下41
    a卖出单41还剩下40
    b卖出单40还剩下39
    c卖出单39还剩下38
    a卖出单38还剩下37
    b卖出单37还剩下36
    c卖出单36还剩下35
    a卖出单35还剩下34
    b卖出单34还剩下33
    c卖出单33还剩下32
    a卖出单32还剩下31
    b卖出单31还剩下30
    c卖出单30还剩下29
    a卖出单29还剩下28
    b卖出单28还剩下27
    c卖出单27还剩下26
    a卖出单26还剩下25
    b卖出单25还剩下24
    c卖出单24还剩下23
    a卖出单23还剩下22
    b卖出单22还剩下21
    c卖出单21还剩下20
    a卖出单20还剩下19
    b卖出单19还剩下18
    c卖出单18还剩下17
    a卖出单17还剩下16
    b卖出单16还剩下15
    c卖出单15还剩下14
    a卖出单14还剩下13
    b卖出单13还剩下12
    c卖出单12还剩下11
    a卖出单11还剩下10
    b卖出单10还剩下9
    c卖出单9还剩下8
    a卖出单8还剩下7
    b卖出单7还剩下6
    c卖出单6还剩下5
    a卖出单5还剩下4
    b卖出单4还剩下3
    c卖出单3还剩下2
    a卖出单2还剩下1
    b卖出单1还剩下0

       ReentrantLock lock = new ReentrantLock(); 非公平锁

    a卖出单50还剩下49
    a卖出单49还剩下48
    a卖出单48还剩下47
    a卖出单47还剩下46
    a卖出单46还剩下45
    a卖出单45还剩下44
    a卖出单44还剩下43
    a卖出单43还剩下42
    a卖出单42还剩下41
    a卖出单41还剩下40
    a卖出单40还剩下39
    a卖出单39还剩下38
    a卖出单38还剩下37
    a卖出单37还剩下36
    a卖出单36还剩下35
    a卖出单35还剩下34
    a卖出单34还剩下33
    a卖出单33还剩下32
    a卖出单32还剩下31
    a卖出单31还剩下30
    a卖出单30还剩下29
    a卖出单29还剩下28
    a卖出单28还剩下27
    a卖出单27还剩下26
    a卖出单26还剩下25
    a卖出单25还剩下24
    a卖出单24还剩下23
    a卖出单23还剩下22
    a卖出单22还剩下21
    a卖出单21还剩下20
    a卖出单20还剩下19
    a卖出单19还剩下18
    a卖出单18还剩下17
    a卖出单17还剩下16
    a卖出单16还剩下15
    a卖出单15还剩下14
    a卖出单14还剩下13
    b卖出单13还剩下12
    b卖出单12还剩下11
    b卖出单11还剩下10
    b卖出单10还剩下9
    b卖出单9还剩下8
    b卖出单8还剩下7
    b卖出单7还剩下6
    b卖出单6还剩下5
    b卖出单5还剩下4
    b卖出单4还剩下3
    b卖出单3还剩下2
    b卖出单2还剩下1
    b卖出单1还剩下0
     

  • 相关阅读:
    【vue2绘制echarts环状图】vue2使用echarts绘制环状图
    Postman:完整指南
    3D建模游戏场景创建大致流程
    Windows安装Linux子系统
    抖音视频抓取软件的优势|视频评论内容提取器|批量视频下载
    十大网站助力人工智能学习之路
    MemArts :高效解决存算分离架构中数据访问的组件
    论文笔记: 多标签学习 DM2L
    2022杭电多校(五)
    [附源码]计算机毕业设计基于SpringBoot智能家电商城
  • 原文地址:https://blog.csdn.net/yaobo2816/article/details/125607356