详解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,并发安全
0
投稿

猜你喜欢

  • c语言10个经典小程序

    2023-11-03 01:11:35
  • Spring创建Bean的生命周期详析

    2022-01-27 06:33:26
  • 深入分析JAVA 建造者模式

    2023-03-14 01:32:27
  • java实现将数字转换成人民币大写

    2023-08-11 05:07:29
  • C++ lambda函数详解

    2023-06-20 07:49:43
  • Spring中校验器(Validator)的深入讲解

    2022-03-05 11:58:35
  • 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
  • SpringBoot项目集成Flyway进行数据库版本控制的详细教程

    2023-11-24 05:20:33
  • Java的关键字与标识符小结

    2023-08-17 08:36:50
  • C#判断ip地址是否可以ping的通

    2021-08-29 10:53:13
  • Java数据结构之链表、栈、队列、树的实现方法示例

    2021-10-07 10:40:29
  • 解决idea web 配置相对路径问题

    2022-01-12 06:48:40
  • 使用Maven搭建Hadoop开发环境

    2021-09-11 07:55:45
  • Java泛型T,E,K,V,N,?与Object区别和含义

    2022-02-23 07:25:30
  • SpringBoot整合Quartz实现定时任务详解

    2021-11-22 06:40:57
  • Java并发编程之Fork/Join框架的理解

    2023-09-30 14:14:01
  • 学习Java HashMap,看这篇就够了

    2023-11-11 11:18:56
  • java 请求跨域问题解决方法实例详解

    2023-08-24 02:55:11
  • asp之家 软件编程 m.aspxhome.com