首页 > 编程语言 >java多线程中的 锁(暂时记录)

java多线程中的 锁(暂时记录)

时间:2023-10-04 13:22:27浏览次数:43  
标签:java Thread 记录 lock try static ticket 多线程 public

P150-lock----锁----那一节
public class ThreadExtend extends Thread {
    static int ticket = 0;     static Lock lock = new ReentrantLock();     public void run() {         while (true) {             lock.lock();             if (ticket == 100) {                 break;             } else {                 try {                     Thread.sleep(30);                     ticket++;                     System.out.println(Thread.currentThread().getName() + "卖票" + ticket);
                } catch (Exception e) {
                } finally {                     lock.unlock();                 }             }         }     } }
---分割线---对比--
public class ThreadExtend extends Thread {     static int ticket = 0;     static Lock lock = new ReentrantLock();     public void run() {         while (true) {             lock.lock();             if (ticket == 100) {                 break;             } else {                 try {                     Thread.sleep(30);                 } catch (Exception e) {                 } finally {                     lock.unlock();                 }                  ticket++;                  System.out.println(Thread.currentThread().getName() + "卖票" + ticket);             }         }     } } ----------********----------- ticket++; sout(); 换个位置。结果完全不一样。这是不是说明 就算加锁, try里面的语句会全部执行完毕呢? 这种随机性,不会跨越try括号里的整体???

标签:java,Thread,记录,lock,try,static,ticket,多线程,public
From: https://www.cnblogs.com/liuliu-hai/p/17742174.html

相关文章

  • CVE-2010-2883 学习记录(漏洞战争,启动!)
    格式分析Header:文件头,用来注明pdf文件版本号Body:主要由组成文件的对象组成,例如图片,文字Cross-regerencetable:交叉引用表,用于存放所有对象的引用、位置偏移、字节长度,用于随机访问pdf中的任意对象Trailer:文件尾,给出交叉引用表的位置(指针)和一些关键对象的信息(指针),......
  • JavaScript中获取URL中参数值的方法
    方法一:正则法functiongetQueryString(name){varreg=newRegExp('(^|&)'+name+'=([^&]*)(&|$)','i');varr=window.location.search.substr(1).match(reg);if(r!=null){returnunescape(r[2]);......
  • 【后端开发】01-Java基础语法
    Java基础语法目录1.概述1.1.语言特性1.2.开发平台1.3.开发环境1.4.开发步骤1.5.注释2.变量与运算符2.1.关键字/保留字2.2.标识符2.3.变量2.4.常用数据类型2.4.1.基本数据类型(8种)2.4.2.引用数据类型2.4.3.数据类型转换2.5.运算符2.5.1.算术运算符(7个)2.5.2.关系运......
  • 基于Java的摄影素材分享网站的设计与实现(亮点:活动报名、点赞评论、图片下载、视频下载
    (摄影分享网站)网上大部分的毕设套路如下:在b站发毕设项目的演示视频,让你免费领取,你领取完发现代码不全或者数据库少表,根本跑不起来!如果要调试则收费300:sweat_smile:真的是恶心至极有没有!某宝找人帮忙写,简单来说比第一种行为靠谱,但是很贵!说是可以免费修改其实修改基本排不上队,......
  • Java之对象内存分析
    相信大家有时候在读代码的时候应该都会有以下情况:这个对象本定义在上面,乱跑什么?怎么又到下面去了?欸?我明明改变了这个对象的值,怎么没变呢?要想搞清楚某一对象在程序中是怎样活蹦乱跳的,首先我们要对其内存的状况要有些了解。在java中,类是属于引用数据类型,而引用数据类型最大的......
  • Java语言基础知识全总结
    一.Java的优点1.      跨平台性。一次编译,到处运行。Java编译器会将Java代码编译成能在JVM上直接运行的字节码文件,C++会将源代码编译成可执行的二进制代码文件,所以C++执行速度快2.      纯面向对象。Java所有的代码都必须在类中书写。C++兼具面向对象和面向过程的特......
  • Java新特性中的Preview功能如何运行和调试
    在每个Java新版本发布的特性中,都会包含一些Preview(预览)功能,这些功能主要用来给开发者体验并收集建议。所以,Preview阶段的功能并不是默认开启的。如果想体验某个Java版本中的Preview功能,您还需要做一些设置才能把程序跑起来。下面以IDEA2023.2为例,演示为Java21开启Preview功能......
  • JAVA入门——方法引用
    把已经有的方法拿过来用,当作函数式接口中抽象方法的方法体引用出必须是函数式接口被引用的方法必须已经存在被引用方法的形参和返回值需要和抽象方法保持一致被引用方法的功能要满足当前要求::双冒号是方法引用符 方法引用的分类引用静态方法:格式类名::静态......
  • java——mysql随笔——运维——分库分表&MyCat
    分库分表:                    介绍:                    拆分方式:                                     ......
  • Java JDBC连接数据库的CURD操作(JDK1.8 + MySQL8.0.33 + mysql-connector-java-8.0.27-
    JDBC概述JDBC(JavaDatabaseConnectivity)是一个独立于特定数据库管理系统、通用的SQL数据库存取和操作的公共接口(一组API),定义了用来访问数据库的标准Java类库,(java.sql,javax.sql)使用这些类库可以以一种标准的方法、方便地访问数据库资源。JDBC为访问不同的数据库提供了一......