3.Lock锁方式

    image.png
    image.png
    image.png
    image.png

    /*
    __
    解决线程安全问题的方式三;Lock—- JDK5.0新增
    *
    1.面试题;synchronized lock的异同?
    __
    相同:二者都可以解决线程安全问题
    * 不同:synchronized机制在执行完相应的同步代码块以后,自动的释放同步监视器
    lock需要手动的启动同步( lock() ,同时结束同步也需要手动的实现( unlock()
    __

    * 2.优先使用顺序:
    lock —>同步代码块 —>同步方法
    __

    *面试题;如何解决线程安全问题?有几种方式?

    __

    1. package com.atguigu.java2;
    2. import java.util.concurrent.locks.ReentrantLock;
    3. /**
    4. * 解决线程安全问题的方式三;Lock锁 --- JDK5.0新增
    5. *
    6. * 1.面试题;synchronized 与 lock的异同?
    7. * 相同:二者都可以解决线程安全问题
    8. * 不同:synchronized机制在执行完相应的同步代码块以后,自动的释放同步监视器
    9. * lock需要手动的启动同步( lock() ),同时结束同步也需要手动的实现( unlock() )
    10. *
    11. * 2.优先使用顺序:
    12. * lock -->同步代码块 -->同步方法
    13. *
    14. *面试题;如何解决线程安全问题?有几种方式?
    15. *
    16. *
    17. * @author Dxkstart
    18. * @create 2021-05-07 19:58
    19. */
    20. public class LockTest1 {
    21. public static void main(String[] args) {
    22. Window1 w = new Window1();
    23. Thread t1 = new Thread(w);
    24. Thread t2 = new Thread(w);
    25. Thread t3 = new Thread(w);
    26. t1.start();
    27. t2.start();
    28. t3.start();
    29. }
    30. }
    31. class Window1 implements Runnable{
    32. private int ticket = 100;
    33. //1.实例化ReentrantLock
    34. private ReentrantLock lock = new ReentrantLock();
    35. @Override
    36. public void run() {
    37. while (true){
    38. try {
    39. //2.调用调用锁定方法:lock()
    40. lock.lock();
    41. if(ticket > 0){
    42. try {
    43. Thread.sleep(50);
    44. } catch (InterruptedException e) {
    45. e.printStackTrace();
    46. }
    47. System.out.println(Thread.currentThread().getName() +
    48. ":售票,票号为:" + ticket);
    49. ticket --;
    50. }else{
    51. break;
    52. }
    53. } finally {
    54. //3.调用解锁方法:unlock()
    55. lock.unlock();
    56. }
    57. }
    58. }
    59. }

    若有收获,就点个赞吧

    0 人点赞

    • 书签
    • 添加书签 移除书签
    • JAVA基础编程
      • 1.Java语言概述
        • 概述
      • 2.基本语法
        • 进制(了解)
        • 关键字与标识符
        • 变量的使用(重点)
          • 数据类型
        • 运算符
          • 1.算术运算符
          • 2.赋值运算符
          • 3.比较运算符
          • 4.逻辑运算符
          • 5.位运算符
          • 6.三元运算符
          • 运算符的优先级
        • 流程控制
          • 循环结构
            • break、continue
            • For循环
            • While循环
            • Do-while循环
          • 分支结构
            • if-else
            • switch-case
            • 获取随机数
          • Scanner类的使用
    • 3.数组
      • 多维数组
      • 数组与算法
      • 数组中常见的异常
    • 4.面向对象
      • 三条主线
        • 类及类的成员
          • 属性
          • 方法
            • 方法的重写
            • 再谈方法
              • 方法的重载
                • 练习
              • 可变个数形参
              • 方法参数的值传递机制
                • 练习1
                • 练习2
              • 递归方法
            • return关键字的使用
          • 构造器
            • 练习1
          • 代码块
            • 练习1
          • 内部类
        • 面向对象的三大特征
          • 封装性
            • 封装与隐藏
              • 练习1
            • 权限修饰符
          • 继承性
            • 练习1
            • 练习2
          • 多态性
            • 多态性的复习
            • 向下转型
              • 复习
            • 练习1
            • 练习2
        • 关键字
          • this
            • 练习1
          • package
          • import
          • super
          • static
            • main()的使用说明
            • 练习1
            • 练习2
          • final
          • abstract
            • (抽象性)
              • 抽象类与抽象方法
                • 练习1
                • 练习2
                • 练习3
          • interface
      • 匿名对象
      • JVM内存结构
      • 综合练习
        • 练习2
        • 练习3
        • 练习4
        • 练习5
        • 练习6
        • 练习7
      • 拓展
        • JavaBean
        • UML类图
      • 补充
        • Object类的使用
          • 练习1
        • equals
          • 练习1
          • 练习2
        • toString()方法
        • 包装类的使用
          • 练习1
          • 练习2
          • 练习3
        • 单元测试方法的使用
      • 设计模式
        • 单例设计模式(要求手写)
        • 模板方法设计模式
          • 练习1
    • 5.异常处理
      • 异常概述与异常体系结构
      • 常见异常
        • Error
        • Exception
      • 异常处理机制一:try-catch-finally
      • 异常处理机制二:throws
      • 手动抛出异常:throw
      • 用户自定义异常类
      • 练习1
    • 6.Java高级编程
      • 多线程
        • 基本概念
        • 线程的创建和使用
          • 比较两种方法
          • 方法一
            • 练习1
            • 练习2
          • 方法二
            • 练习1
          • 线程的常用方法
          • 线程的优先级设置
        • 线程的生命周期
        • 线程的同步
          • 1.同步代码块
            • 继承法
            • 实现法
          • 2.同步方法
            • 继承法
            • 实现法
          • 线程安全的单例模式
          • 线程的死锁问题
          • 3.Lock锁方式
        • 线程的通信
          • 典中典
        • JDK5.0新增线程创建方式
          • 实现Callable接口
          • 线程池
      • 常用类
        • 字符串相关的类
          • JVM中涉及字符串的内存结构
          • String常用方法
          • String与基本数据类型转换
          • 常见算法题目
          • StringBuffer/Builder
            • 常用方法
        • JDK8之前的日期时间API
          • 练习1
        • JDK8中新日期时间API
        • Java比较器
        • System类
        • Math类
        • BigInteger与BigDecimal
      • 枚举类&注解
        • 枚举类的使用
        • 注解(Annotation)
      • 集合(重点)
        • Java集合框架概述
        • Collection接口方法
        • Iterator迭代器接口
        • Collection子接口之一:List
          • 高频面试题
          • 面试题
        • Collection子接口之一:Set
        • Map接口
          • HashMap(重点)
          • TreeMap
          • Hashtable
        • Collections工具类
        • 面试题
      • 泛型&File
        • 为什么要有泛型(Generic)
        • 在集合中使用泛型
        • 自定义泛型结构
        • DAO
        • 泛型在继承上的体现
        • 通配符的使用
        • 泛型应用举例
      • IO流
        • File类的使用
        • IO流原理及流的分类
        • 节点流(或文件流)
          • 字符流
          • 字节流
        • 缓冲流
        • 转换流
        • 标准输入、输出流
        • 打印流
        • 数据流
        • 对象流
          • 序列化
        • 随机存取文件流
        • NIO.2中Path、Paths、Files类的使用
      • 网络编程
        • 网络编程概述
        • 网络通信要素概述
        • 通信要素1:IP和端号
        • 通信要素2:网络协议
        • TCP网络编程
          • 例题
            • 第一题
            • 第二题
            • 第三题
        • UDP网络编程
        • URL编程
      • 反射
        • Java反射机制概述
        • 理解Class类并获取Class实例
        • 类的加载与ClassLoader的理解
        • 创建运行时类的对象
        • 调用运行时类的完整结构
          • 注解
          • 接口
          • 属性
          • 方法
          • 其他结构
        • 调用运行时类的指定结构
        • 复习
        • 反射的应用:动态代理
          • 静态代理举例
          • 动态代理举例
      • Java 8 其他新特性
        • 新特性简介
        • Lambada表达式
        • 函数式(Functional)接口
        • 方法引用与构造器引用
        • 强大的Stream API
        • Optional类
    • 结束
    • IDEA的使用
      • 快捷键
      • (康师傅版)快捷键
      • Debug
    • Eclipse的使用
      • 常用快捷键
      • Debug功能
    • Java学习路线
      • 尚硅谷路线
      • 动力节点路线
    • 小知识
      • 1.保留两位小数
      • 2.多行输入
    • 单词
    • 补学点
    暂无相关搜索结果!
      展开/收起文章目录

      玻璃钢生产厂家2022新年商场外立面美陈四川公园玻璃钢雕塑生产厂家玻璃钢骆驼雕塑哪家强台州户外玻璃钢雕塑造型望城玻璃钢卡通雕塑河南水果玻璃钢雕塑订做价格德州太湖石玻璃钢彩绘雕塑玻璃钢动物雕塑安装效果玻璃钢发光雕塑大象鹤岗市玻璃钢雕塑定制庆阳广场玻璃钢雕塑定做山西优质玻璃钢景观雕塑厂家玻璃钢建筑雕塑制作六盘水商场美陈厂商甘肃抽象人物玻璃钢雕塑常州玻璃钢卡通雕塑定制苏州周年庆典商场美陈新密房地产水景玻璃钢仿铜雕塑武汉特色玻璃钢雕塑哪家便宜佛山玻璃钢雕塑心形花盆许昌定做玻璃钢雕塑厂报价山东常见商场美陈厂家直销商场美陈创意思路河南超市商场美陈批发价玻璃钢花盆装饰图案玻璃钢雕塑包不包运玻璃钢雕塑运输注意事项三门峡园林玻璃钢人物雕塑上海开业商场美陈价格四川室内商场美陈哪里有香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

      玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化