首页 > 编程语言 >Java基础 同步代码块

Java基础 同步代码块

时间:2023-10-27 20:15:15浏览次数:36  
标签:ticket 同步 Java 代码 static new Ticket public

同步代码块:

利用同步代码块把操作共享数据的代码给锁起来,让同步代码块里面的代码是轮流去执行的

 

格式:

synchronized (锁对象) {

      操作共享数据的代码

}

 

细节:

1. 在最初,锁的状态是默认打开的,如果有一个线程进去了,锁就会自动关闭

2. 当锁里面全部代码都执行完毕了,线程出来了,锁才会自动打开

 

一般锁对象处 我们会写 当前类的字节码文件:类名.class,表示当前类的字节码文件对象,也就是 class 的对象,这个对象是唯一的

 

代码示例:

package pojo;

public class Ticket extends Thread{
public static Integer ticket = 1;

//锁对象,一定要是唯一的,所以要加 static
public static Object obj = new Object();

@Override
public void run() {
while (true) {
//同步代码块
synchronized (obj) {
if (ticket > 100)
break;
System.out.println(getName() + "第" + ticket + "张票");
ticket++;
}
}
}
}
--------------------------------------------------------------------------------
public static void main(String[] args) throws Exception {
Ticket t1 = new Ticket();
Ticket t2 = new Ticket();
Ticket t3 = new Ticket();
t1.start();
t2.start();
t3.start();
}

标签:ticket,同步,Java,代码,static,new,Ticket,public
From: https://www.cnblogs.com/gagaya2/p/17793043.html

相关文章

  • [ApacheCommon组件使用-IO]关于JavaIO,相当输入的一个工具就是ApacheCommon-IO
    1.首先,如果你使用的是maven或者gradle建立的项目,maven只需要<!--https://mvnrepository.com/artifact/commons-io/commons-io--><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId>......
  • 使用vscode 用git 拉取代码,提示:在签出前,请清理存储库工作树
    使用vscode用git拉取代码,提示:在签出前,请清理存储库工作树如图:问题:git仓库上的代码和本地代码存在冲突了所以会报这个报错。解决办法:手动解决①gitstash先将本地修改存储起来②gitpull拉取远程③gitstashpop还原暂存内容放弃本地修改,直接覆盖①gitreset--hard②g......
  • aardio调用java语言
    一、引入java默认只要在aardio中调用importjava;就会自动搜索系统可用的JRE,如果没有找到JRE,会自动导入java.jre.v8扩展库,并自动安装OpenJDKJREv8 。注:如果系统已经安装了java6,就会用系统自带的java6,而不会自动安装OpenJDKJREv8。项目经验:项目开发过程中就遇......
  • JavaSeript在发送AJAX请家时,URL的域名地址是使用绝对地址还是相对地呲?
    在发送AJAX请求时,URL的域名地址可以使用绝对地址或相对地址。绝对地址包含完整的协议、域名和路径,例如:http://example.com/api/data。这种方式适用于需要请求不同域名下的数据的情况。使用绝对地址时,可以确保请求准确地发送到指定的服务器。相对地址只包含相对于当......
  • javaweb学习每日总结-第七天
    第七天学习Mvn模式和三层架构今天回顾了开发的三层框架,做了一个完成一点的小案例,也是亲自感受了一下做项目的一个大概的流程,想要清楚的做完一个项目,那么对流程的安排是至关重要的,下面说说我个人的理解,首先是关注数据库,没有数据一切白搭,在数据库里建好所需的表是第一步,第二步则是......
  • Java基础 线程的生命周期
      1.当创建线程对象的时候,是新建状态2.新建完之后调用start()方法就变成了就绪状态(是在调用完了start()方法之后才变成了就绪状态)。在就绪状态下,线程开始抢夺CPU的执行权。注意是正在抢,还没有抢到,没抢到就无法执行代码。所以就绪状态有执行资格,但没有执行权(有执行......
  • php代码审计学习----骑士cms代码审计
    php代码审计学习----骑士cms代码审计源码下载https://github.com/Betsy0/CMSVulSource环境搭建删掉data里的install.lock然后把源码放在phpstudy的网站目录下访问http://xxx/74cms/install.php使用phpstorm调试使用seay进行辅助代码审计(主要phpstorm不知为什么总是无法......
  • 获取Java21所有启动参数及默认值
    各版本获取启动参数命令:java-XX:+PrintFlagsFinal-version>jvm_flags.txt所有参数:[Globalflags]intActiveProcessorCount=-1{product}{default}uintxAdaptiveSizeDecrementScaleFactor......
  • guava 缓存刷新 代码记录 刷新缓存,未完成代码
    privatestaticAtomicBooleanrefreshCaching=newAtomicBoolean(false);privatestaticLoadingCache<String,String>cache1=CacheBuilder.newBuilder().maximumSize(1000).expireAfterWrite(10,TimeUnit.MINUTES)......
  • 行行AI公开课:飞书无代码平台AI技术负责人邓范鑫——从第一性原理看大模型Agent技术
    当我们进入智能时代,开始思考:什么将会成为这个时代的核心载体?是App?是网站?还是Agent?也许几年后的现实才能给出答案,但历史告诉我们一个新鲜事物的演进总会找到一个稳定的术语来概括这个载体,而今天我们看到Agent最具有这个潜力。几个月前,OpenAI在内部就开始高度关注智能体(Agent)领......