详解Java利用同步块synchronized()保证并发安全
作者:imtimt 时间:2021-09-12 12:15:07
本文实例为大家分享了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,synchronized,并发安全
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
c语言10个经典小程序
2023-11-03 01:11:35
Spring创建Bean的生命周期详析
2022-01-27 06:33:26
![](https://img.aspxhome.com/file/2023/8/71178_0s.png)
深入分析JAVA 建造者模式
2023-03-14 01:32:27
![](https://img.aspxhome.com/file/2023/8/66708_0s.jpg)
java实现将数字转换成人民币大写
2023-08-11 05:07:29
C++ lambda函数详解
2023-06-20 07:49:43
Spring中校验器(Validator)的深入讲解
2022-03-05 11:58:35
![](https://img.aspxhome.com/file/2023/5/71245_0s.jpg)
SpringBoot+Netty+WebSocket实现消息发送的示例代码
2023-08-16 00:02:52
java中ArrayList和LinkedList的区别详解
2022-09-05 11:13:48
Android如何让WebView中的HTML5页面实现视频全屏播放
2023-07-29 00:32:06
![](https://img.aspxhome.com/file/2023/1/82401_0s.jpg)
SpringBoot项目集成Flyway进行数据库版本控制的详细教程
2023-11-24 05:20:33
![](https://img.aspxhome.com/file/2023/0/59390_0s.png)
Java的关键字与标识符小结
2023-08-17 08:36:50
![](https://img.aspxhome.com/file/2023/2/72602_0s.png)
C#判断ip地址是否可以ping的通
2021-08-29 10:53:13
Java数据结构之链表、栈、队列、树的实现方法示例
2021-10-07 10:40:29
解决idea web 配置相对路径问题
2022-01-12 06:48:40
![](https://img.aspxhome.com/file/2023/9/62729_0s.png)
使用Maven搭建Hadoop开发环境
2021-09-11 07:55:45
Java泛型T,E,K,V,N,?与Object区别和含义
2022-02-23 07:25:30
![](https://img.aspxhome.com/file/2023/7/64747_0s.jpg)
SpringBoot整合Quartz实现定时任务详解
2021-11-22 06:40:57
![](https://img.aspxhome.com/file/2023/4/67144_0s.png)
Java并发编程之Fork/Join框架的理解
2023-09-30 14:14:01
![](https://img.aspxhome.com/file/2023/9/75509_0s.png)
学习Java HashMap,看这篇就够了
2023-11-11 11:18:56
![](https://img.aspxhome.com/file/2023/2/59422_0s.png)
java 请求跨域问题解决方法实例详解
2023-08-24 02:55:11