详解Java利用同步块synchronized()保证并发安全
作者:imtimt 发布时间:2021-09-12 12:15:07
标签:Java,synchronized,并发安全
本文实例为大家分享了Java利用同步块synchronized()保证并发安全的具体代码,供大家参考,具体内容如下
package day10;
/**
* 同步块
* 有效地缩小同步范围
* 可以在保证并发安全的同时尽可能提高并发效率
*
* 实例:模拟两个人同时进店买衣服,为提高效率
* 只在试衣服阶段进行同步排队过程,其他阶段无需排队。
* @author kaixu
*
*/
public class SyncDemo2 {
public static void main(String[] args) {
shop shop = new shop();
Thread t1 = new Thread(){
public void run() {
shop.buy();
}
};
Thread t2 = new Thread(){
public void run() {
shop.buy();
}
};
t1.start();
t2.start();
}
}
class shop{
public void buy(){
//获取运行buy方法的线程
Thread t = Thread.currentThread();
try{
System.out.println(t.getName()+":正在挑衣服...");
Thread.sleep(5000);
/**
* 同步块可以要求多个线程对该块内的代码排队执行
* 但是前提条件是同步监视器对象(即上锁的对象)
* 要求多个线程看到的必须是同一个。
* synchronized(同步监视器对象){
* 需要同步的代码
* }
* 所谓同步执行即:多个线程必须排队执行
* 所谓异步执行即:多个线程可以同时执行
*/
synchronized (this) {
System.out.println(t.getName()+":正在试衣服...");
Thread.sleep(5000);
}
System.out.println(t.getName()+":结账离开。");
}catch (Exception e) {
e.printStackTrace();
}
}
}
以上所述是小编给大家介绍的Java利用同步块synchronized()保证并发安全详解整合网站的支持!
来源:https://blog.csdn.net/a771581211/article/details/88701005


猜你喜欢
- java中的复杂查询sql语句实现:这样的查询栏,在页面中很常见,这就是复杂查询的条件,我们可以填写一个条件或多个条件,也可以一个都不填写,
- SpringBoot默认的存放静态资源文件的位置是:注:SpringBoot中的src/main/resources/资源文件夹对应clas
- 本文实例为大家分享了C#使用NPOI设置Excel下拉选项的具体代码,供大家参考,具体内容如下最近在做一个导出模板的功能,需要限制用户的某些
- Mybatis Criteria条件查询CriterionCriterion是最基本,最底层的Where条件,用于字段级的筛选。Criter
- 前言日志接口(slf4j)slf4j是对所有日志框架制定的一种规范、标准、接口,并不是一个框架的具体的实现,因为接口并不能独立使用,需要和具
- 上一篇介绍了Tesseract库的使用(OCR库Tesseract初探),文末提到了Tesseract是用c/c++开发的,也有C#的开源版
- 以往都是使用反射调用实例方法,那么反射如何调用静态方法呢?看下面的例子Class<?> threadClazz = Class.
- java 使用异常的好处总结一、分析Java异常处理机制确实比较慢,这个“比较慢”是相对于诸如String、Integer等对象来说,单单从
- 本文实例中的自定义类PictureBox继承于UserControl,最终实现简单的分屏功能。分享给大家供大家参考之用。具体实现代码如下:p
- Condition的作用是对锁进行更精确的控制。Condition中的await()方法相当于Object的wait()方法,Conditi
- Java中有四种权限修饰符publicprotected(default)private同一个类yesyesyesyes同一个包yesyes
- 本文实例为大家分享了Android自定义View实现波浪动画的具体代码,供大家参考,具体内容如下效果演示代码调用与实现效果xml中调用<
- 目录Mybatis简介Mybatis开发步骤:Mybatis的映射文件概述Mybatis的增删改查操作MyBatis的核心配置文件概述MyB
- 最近接触了Android自定义控件,涉及到自定义xml中得属性(attribute),其实也很简单,但是写着写着,发现代码不完美了,就是在a
- 目录1. 什么是XSS攻击?2. 如何防范?2.1 什么时候注入请求参数3. 具体处理细节1. 什么是XSS攻击? &
- 在spring 3.2 及以后版本中增加了对请求的异步处理,旨在提高请求的处理速度降低服务性能消耗。在我们的请求中做了耗时处理,当并发请求的
- 最近在做上传文件的服务,简单看了网上的教程。结合实践共享出代码。由于网上的大多数没有服务端的代码,这可不行呀,没服务端怎么调试呢。Ok,先上
- 目录一. 已有倒计时方案存在的问题1. CountDownTimer2. Handler3. Timer二. 自己封装倒计时总结一. 已有倒
- 前言最近和前端联调接口,需要进行一个省市区联动,最终定的方案是通过接口返回一个树形结构给前端,类似这样的结构:下面就把相关表和代码分享给大家
- 跑起来的效果看每个类的test方法,自己调用来测试目的是看看哪个算法好用,移植的时候比较单纯没有研究懂算法,代码结构也没改动,只是移植到C#