首页 > 编程语言 >java 多线程传统锁:synchronized,Lock锁

java 多线程传统锁:synchronized,Lock锁

时间:2024-11-27 19:44:15浏览次数:3  
标签:Ticket2 java int Lock numer lock new 多线程

传统锁:synchronized 是内置关键词,无法获取锁的状态
Lock锁:类 是否获取到锁,需手动释放锁

public class SaleTicketDem {
public static void main(String[] args) {
Ticket2 t=new Ticket2();
new Thread(()->{
for (int i = 0; i <40 ; i++) {
t.sale();;
}
},"a").start();

    new Thread(()->{
        for (int i = 0; i <40 ; i++) {
            t.sale();;
        }
    },"b").start();

    new Thread(()->{
        for (int i = 0; i <40 ; i++) {
            t.sale();;
        }
    },"c").start();
}

}
class Ticket2{
private int numer=30;
Lock lock=new ReentrantLock();
public void sale(){
lock.lock();
try {
if(numer>0){
System.out.println(Thread.currentThread().getName()+"卖出"+numer--+"票,剩余:"+numer);
}
}catch(Exception e){
e.printStackTrace();
}
finally {
lock.unlock();
}
}
}

标签:Ticket2,java,int,Lock,numer,lock,new,多线程
From: https://www.cnblogs.com/chenshaojun2008/p/18572967

相关文章

  • 前端技术对JavaScript中DOM的学习
    DOM目录DOMDOM树结构获取DOM对象更新DOM对象插入DOM对象删除DOM对象DOM树结构根节点(RootNode):在HTML文档中,<html>元素是整个DOM树的根节点。它包含了文档的所有其他部分。元素节点(ElementNode):这些节点对应了HTML或XML文档中的标签,如<body>、<p>等。元素节点可以有子节点,包......
  • javaweb基于JSP+Servlet开发汽车租赁在线租车服务系统源码(前台+后台)课程设计 毕业设计
    ......
  • JavaScript 设置 Cookie 中的 HttpOnly 标志为什么无法生效?
    javascript设置cookie中的httponly为什么以下代码无法设置Cookie的HttpOnly标志?document.cookie='url=https://www.test.com/;expires=0;path=/;HttpOnly;';答案在客户端端(JavaScript)无法设置HttpOnly标志。HttpOnly标志必须在服务端添加。这一标志旨在防止客......
  • Java学习笔记--继承的介绍,基本使用,成员变量和成员方法访问特点
    目录一,继承1.什么是继承2.怎么去继承:3.注意:4.继承怎么学   二,继承基本使用三,成员变量和成员方法访问特点1.成员变量访问特点1,子类和父类中的成员变量不重名:总结:2,子类和父类中的成员变量重名总结:三,成员方法访问特点1,子类和父类中的成员变量不重名:2,......
  • Z2400017基于Java+mysql+SpringBoot+Vue实现的社区博客系统 源码 PPT 配置 文档
    社区博客系统1.项目概述2.系统功能3.技术栈及运行环境4.界面展示5.源码获取1.项目概述社区博客系统是一个基于SpringBoot和Vue.js构建的全栈Web应用程序,旨在为用户提供一个功能丰富、互动性强且易于管理的博客平台。该系统结合了现代Web开发中最先进的技术栈,确保了......
  • Java并发工具类深度解析
    目录1.ConcurrentHashMap1.1原理1.2示例2.AtomicInteger2.1原理2.2CAS操作图解2.3代码示例3.Semaphore3.1原理3.2Semaphore工作流程3.3代码示例4.CyclicBarrier4.1原理4.2CyclicBarrier工作流程4.3代码示例5.CountDownLatch5.1原理5.2CountDownLat......
  • 深入探讨 JavaScript 的事件循环
    深入探讨JavaScript的事件循环......
  • java 基础知识汇总(1)
    目录1.什么是面向对象?1.1面向对象的特征1.1.1封装(Encapsulation):1.1.2继承(Inheritance):1.1.3多态(Polymorphism):1.1.4抽象(Abstraction):1.2面向对象与面向过程的区别1.3重载(Overload)与重写(Override)的区别   1.3.1重写(Override)1.3.2重载(Overload)1.4构造......
  • JAVA开发规范v1.0
    01-中铜国贸JAVA开发规范v1.0一、编程规约(一)命名风格【强制】代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。反例:_name/_name/$Object/name/name$/Object$【强制】代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的......
  • JAVA台球教练软件源码,多端适配技术
    针对JAVA台球教练软件源码及其多端适配技术的需求,以下是一个详细的解答:一、JAVA台球教练软件源码概述技术栈:后端:采用SpringBoot框架,用于快速构建独立的、生产级别的基于Spring的应用程序。同时,使用MyBatisPlus进行数据持久化操作,以简化CRUD操作并提高开发效率。MySQL或Po......