多线程——锁private final ReentrantLock lock = new ReentrantLock();

2023-10-27

在这里插入图片描述

package thread;

import java.util.concurrent.locks.ReentrantLock;

public class TestLock {
    public static void main(String[] args) {
        Lock1 lock = new Lock1();

        new Thread(lock,"张").start();
        new Thread(lock,"李").start();
        new Thread(lock,"王").start();
    }
}

class Lock1 implements Runnable {

    int ticket = 10000;

    private final ReentrantLock lock = new ReentrantLock();
    @Override
    public void run() {
        while (true) {
            try{
                lock.lock();// 加锁
                if (ticket>0) {
                    System.out.println(Thread.currentThread().getName()+ticket--);
                } else {
                    break;
                }
            }finally {
                lock.unlock();// 解锁

            }
        }
    }
}

https://www.bilibili.com/video/BV1V4411p7EF?p=23

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

多线程——锁private final ReentrantLock lock = new ReentrantLock(); 的相关文章

随机推荐

  • C++ Primer 学习笔记十五 —— 面向对象编程

    记录笔记原则 1 用简单易懂的语言叙述自己的理解 避免照搬原文 2 用实例说明 避免空洞 3 多做总结和横向对比 避免片面 面向对象三个基本概念 抽象 继承 动态绑定 继承使我们简化了类的定义 动态绑定使我们简化了接口的实现 使得所有继承层
  • 探究java IO之AutoCloseable,Closeable和Flushable接口

    http blog csdn net caiwenfeng for 23 article details 41862225 有3个接口对于流类相当重要 其中两个接口是Closeable和Flushable 它们是在java io包中定义的
  • BQ40Z50/BQ4050/BQ40Z80 等 BQ40xxx 系列电量计外围电路设计指导

    TI 电量计在消费和工业市场电池产品广泛应用 本文围绕电量计的功能逐一介绍电量计供电和 采样 对外交互 电池保护 电池均衡等外围电路设计 以帮助大家优化电量计电路设计 提高 开发效率 FAE 壹伍柒 陆陆贰陆 柒捌贰伍 1 电量计外围电路框
  • GPIO 8种工作模式

    GPIO 是什么 GPIO全称General Purpose Input Output 即通用输入 输出 其实GPIO的本质就是芯片的一个引脚 通常在ARM中所有的I O都是通用的 不过由于每个开发板上都会设计不同的外围电路 这就造成GPI
  • QT——操作数据库03

    目录标题 一 安装数据库 二 连接数据库 一 在项目的pro文件中增加一行代码 二 连接sqlite 三 封装连接数据库操作 三 增删查改例子 一 安装数据库 一般使用mysql或者sqlite mysql安装教程 sqlite安装教程 1
  • 多线程顺序打印的5种解法

    多线程同步的方式有许多 有传统的synchronized锁 还可以使用lock锁 下面列举多线程顺序打印的5种解法 算作对线程同步的一个总结 文章目录 经典面试题 多种解法 使用 Lock 使用 wait notify 使用 Lock Co
  • Win10添加开机自动运行软件三种方法(亲测可用)

    Win10管理开机启动项的方法相信大家已经非常熟悉 msconfig命令各系统都通用 那么很多用户发觉Win10和Win7 XP等系统不同 没有启动文件夹 那么我们怎么添加开机启动项呢 如晨软件或程序没有开机启动设置的话 是的 在Win10
  • JGit Authentication JGit验证机制

    验证机制在JGit中大部分与本地git相同 普遍使用SSH协议和HTTP S 协议和他们所支持的验证方法 这篇文章总结了如何使用JGit的验证API去安全连接远程GIT库 虽然在下面的例子中使用的是CloneCommand方法 但是它能实现
  • pip导包时产生错误,UnicodeDecodeError: 'gbk' codec can't decode byte.....illegal multibyte sequence(已解决)

    主要写了解决问题的思路 解决办法在最底部 pip导入python包时产生错误 ERROR Command errored out with exit status 1 command d python38 python exe c impo
  • 使用CSS3的Flex属性让元素居中

    div div
  • 腾讯云,搭建Docker环境

    安装与配置 Docker 任务时间 10min 20min 安装 Docker Docker 软件包已经包括在默认的 CentOS Extras 软件源里 因此想要安装 docker 只需要运行下面的 yum 命令 yum install
  • 【基于大数据的电信诈骗可视化分析-哔哩哔哩】 https://b23.tv/AxkY2Zj

    基于大数据的电信诈骗可视化分析 哔哩哔哩 https b23 tv AxkY2Zj https b23 tv AxkY2Zj
  • SOLIDWORKS如何定制化异型孔向导及其孔标注

    异型孔向导是SOLIDWORKS中一个极为方便的功能 只需要简单的几步设置就可以根据工程师设定好的标准 类型 大小创建符合标准的孔 包括 柱形沉头孔 锥形沉头孔 直孔 直螺纹孔 锥形螺纹孔等等 此外由于工程图和三维模型的协同关联 生成孔的公
  • Linux Vim 简介

    文章目录 01 编辑器 Gedit 介绍 02 什么是 Vi Vim 03 vim工作模式 4 1 命令模式 4 2 编辑模式 4 3 末行模式 04 vim教程 05 vim基本操作 06 vim实用操作 7 1 命令模式下的操作 7 2
  • Anaconda常用指令(详细讲解!!)这一篇文章就够啦!!!小白,新手一定要看的入门文章~~

    各位小伙伴们大家好 今天给大家分享一些关于Anaconda相关的指令 当使用Anaconda作为Python环境和包管理器时 掌握一些常用的指令可以更好地管理和维护您的开发环境 目录 创建和管理环境 安装和管理包 导出和导入环境 管理包仓库
  • Q3营收同比翻三倍,踩猛“油门”零跑必将领跑?

    近日 零跑汽车公布三季度财报 从财报成绩来看 有喜有忧 喜的是销量营收同比环比均出现大幅度增长 忧的是亏损同比扩大86 11 营收同比猛增398 5 销量能否穿越迷雾 详细来看 三季度零跑汽车销量3 56万辆 同比大增186 营收42 88
  • (C语言)打印锯齿矩阵

    关于锯齿矩阵 咱们先来看看题目要求 最近在参与计蒜客的实践 本题是关于链表 但小编想了好久 技术不精 还是没做出来 于是换成了自己比较习惯的结构体 原理 首先 我们需要记录需要插入的整数对应的行号 和这个整数 我用的是结构体 结构体看起来更
  • du命令

    文章目录 du命令 查看指定目录大小 查看指定文件大小 递归查询文件大小 按指定内存单位查看 打印出total总大小 指定递归层级 人性化输出结果 带单位 只显示文件总大小 s 常用 df命令 查看全部文件系统 单位默认KB 查看指定文件系
  • ES数据备份之snapshot和elasticdump

    记录一次使用elaticdump对es集群中的数据进行备份过程 首先我的环境是使用docker启动的es集群的单节点模式 下面为docker compose文件 version 2 services es01 image docker el
  • 多线程——锁private final ReentrantLock lock = new ReentrantLock();

    package thread import java util concurrent locks ReentrantLock public class TestLock public static void main String args