Synchronized作用

synchronized能够在同一时刻最多只有一个线程执行该代码

证明如下:

public class MyThread {public static void main(String[] args) throws InterruptedException {Ticket ticket = new Ticket();Thread aa = new Thread(() -> {try {ticket.getCount();} catch (Exception e) {throw new RuntimeException(e);}}, "aa");Thread bb = new Thread(() -> {try {ticket.getCount();} catch (Exception e) {throw new RuntimeException(e);}}, "bb");aa.start();bb.start();}}class Ticket {Object object = new Object();public void getCount() throws InterruptedException {/*synchronized (object) {*/System.out.println(Thread.currentThread().getName()+"线程开始");Thread.sleep(1000);System.out.println(Thread.currentThread().getName()+"线程结束");/*}*/}
}

① 当不加synchronized 时,输出结果
在这里插入图片描述
②添加 synchronized 执行结果
在这里插入图片描述
③验证
当不添加synchronized关键字时,两个程序都可以进入到此代码块中,就会出现都先打印开始(因为sleep的时间比较长),然后再打印结束;
而当添加synchronized关键字时,只能一个线程先进入,结束后,第二个线程才能在进入执行,就会出现先打印一个程序开始和结束,在开始和结束另一个程序。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/249269.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

性能测试工具架构

背景 性能测试工具(LoadRunner为例) 性能测试工具通常是指那些用来支持压力、负载测试,能够录制和生成脚本、设置和部署场景、产生并发用户和向系统施加持续压力的工具。 性能测试工具录制的是服务端与应用之间的通信数据,而不是…

怎么进行视频压缩大小?常见的4种压缩方法

在当今数字化的时代,我们经常处理大量的视频文件,无论是用于社交媒体分享、视频制作还是存储在我们的设备中。然而,随着视频质量的提升和分辨率的增加,视频文件的大小也相应地变得更加庞大,给存储、分享和传输带来了一…

hal库stm32串口接收不定长数据

参考博客: https://blog.csdn.net/qq_41830158/article/details/121254705 按下面步骤修改实测可用 步骤: 添加串口接收所需变量   打开uart.c文件,在文件顶部的USER CODE BEGIN 0下方添加下列变量 volatile uint8_t rx1_len 0; //接收…

友思特应用 | 微观指尖世界:OCT成像应用之3D指纹提取与识别

欢迎访问官网,探索丰富案例: OCT成像系统 | 光学相干断层扫描 | 谱域OCT | 扫频OCT | 广州友思特科技有限公司 关注“友思特机器视觉与光电”公众号、加入行业交流群或直接联系我们,轻松收获更多技术干货 导读 数字化生活已离不开指纹识别认…

《区块链简易速速上手小册》第6章:区块链在金融服务领域的应用(2024 最新版)

文章目录 6.1 金融服务中的区块链6.1.1 金融服务中区块链的基础6.1.2 主要案例:跨境支付6.1.3 拓展案例 1:去中心化金融(DeFi)6.1.4 拓展案例 2:代币化资产 6.2 区块链在支付系统中的作用6.2.1 支付系统中区块链的基础…

小程序定制开发前,应该考虑些什么?

引言 在移动互联网时代,小程序已经成为许多企业和个人推广业务、提供服务的理想平台。然而,在进行小程序定制开发之前,开发者和业务方需要细致入微地考虑一系列关键因素,以确保最终的小程序既能满足用户需求,又能够顺…

arcgis 批量删除字段

一、打开ArcToolbox-数据管理工具-字段-删除字段。 二、在输入表中选择要删除字段的要素,在删除字段栏中选择要删除的字段,点击确认即可。

Java强训day13(选择题编程题)

选择题 编程题 题目1 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);String s sc.nextLine();char[] c s.toCharArray();int i 0;int t 0;while (i < c.length) {if (c[i] ! \") {…

Go语言基础之单元测试

1.go test工具 Go语言中的测试依赖go test命令。编写测试代码和编写普通的Go代码过程是类似的&#xff0c;并不需要学习新的语法、规则或工具。 go test命令是一个按照一定约定和组织的测试代码的驱动程序。在包目录内&#xff0c;所有以_test.go为后缀名的源代码文件都是go …

Maven的Docker镜像二次打包,再次推送至Harbor中

之所以如此操作&#xff0c;主要原因是&#xff0c;官版的镜像中默认的setting.xml已内置好&#xff0c;不容易修改&#xff0c; 重新二次打包&#xff0c;可以指定我们自己的setting.xml配置&#xff0c;配置自己的私服地址以及解决默认Maven仓库国内下载速度慢的问题 一、创…

ssl数字证书是什么

SSL证书是一种数字证书&#xff0c;用于在网络传输中提供加密和身份验证功能&#xff0c;从而保护数据的安全性和完整性。正规的SSL证书大多是由由权威的证书颁发机构&#xff08;CA&#xff09;颁发的&#xff0c;例如Certum、Digicert、Sectigo等&#xff0c;它们颁发的SSL数…

[机器学习]简单线性回归——最小二乘法

一.线性回归及最小二乘法概念 2.代码实现 # 0.引入依赖 import numpy as np import matplotlib.pyplot as plt# 1.导入数据 points np.genfromtxt(data.csv, delimiter,) # points[0,0]# 提取points中的两列数据&#xff0c;分别作为x&#xff0c;y x points[:, 0] y poi…

【Linux】初始进程地址空间

最近&#xff0c;我发现了一个超级强大的人工智能学习网站。它以通俗易懂的方式呈现复杂的概念&#xff0c;而且内容风趣幽默。我觉得它对大家可能会有所帮助&#xff0c;所以我在此分享。点击这里跳转到网站。 目录 一、再谈fork二、程序地址空间2.1代码验证 三、虚拟地址&am…

Https加密超文本传输协议的运用

一、https的相关知识 1.1 https的简介 HTTPS &#xff08;全称&#xff1a;Hypertext Transfer Protocol Secure &#xff09;&#xff0c;是以安全为目标的 HTTP 通道&#xff0c;在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性 。HTTPS 在HTTP 的基础下加…

ElementUI Form:Checkbox 多选框

ElementUI安装与使用指南 Checkbox 多选框 点击下载learnelementuispringboot项目源码 效果图 el-checkbox.vue &#xff08;Checkbox 多选框&#xff09;页面效果图 项目里el-checkbox.vue代码 <script> const cityOptions [上海, 北京, 广州, 深圳] export def…

C语言操作符

文章目录 1:算术操作符2:移位操作符(移动的是二进制序列中的补码)2.1:知识补充(原码,反码,补码与二进制)2.2:左移操作符(<<)2.2:右移操作符(>>)2.2.1:逻辑右移2.2.2:算术右移 3:位操作符(运算用的是二进制位的补码)3.1:按位与操作符(&)3.2:按位或操作符(|)3.3:…

系统分析师-22年-下午题目

系统分析师-22年-下午题目 更多软考知识请访问 https://ruankao.blog.csdn.net/ 试题一必答&#xff0c;二、三、四、五题中任选其中两题作答 试题一 (25分) 说明 某软件公司拟开发一套博客系统&#xff0c;要求能够向用户提供一个便捷发布自已心得&#xff0c;及时有效的…

使用 axios 请求库,设置请求拦截

什么是 axios&#xff1f; 基于promise网络请求库&#xff0c;可以同构&#xff08;同一套代码可以运行在浏览器&#xff09;&#xff0c;在服务端&#xff0c;使用原生node.js的http模块&#xff0c;在客户端&#xff08;浏览器&#xff09;中&#xff0c;使用XMLHttpRequests…

Kotlin快速入门系列2

Kotlin的基本数据类型 Kotlin 的基本数值类型包括 Byte、Short、Int、Long、Float、Double 等。不同于 Java 的是&#xff0c;字符不属于数值类型&#xff0c;是一个独立的数据类型。 Java和kotlin数据类型对照如下&#xff1a; Java基本数据类型 Kotlin对象数据类型 数据类…

【Linux】基本指令(上)

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:Linux ⚙️操作环境:Xshell (操作系统:CentOS 7.9 64位) 目录 Xshell快捷键 Linux基本指令 ls指令 pwd指令 cd指令 touch指令 mkdir指令 rmdir指令/rm指令 结语 Xshell快捷键 AltEnter 全屏/取消全屏 Tab 进…