资讯专栏INFORMATION COLUMN

java synchronized关键字小测验

blastz / 2585人阅读

摘要:前言前些天公司线上发生事故,在排查原因的过程中发现代码中出现了关键字。究竟关键字回性能有多大影响,今天我们来做一个小实验。因此在单机同时处理个的场景时,关键字会对响应时间有明显的影响。因此在生产环境建议谨慎使用关键字。

前言

前些天公司线上发生事故,在排查原因的过程中发现代码中出现了synchronized关键字。在学习java的时候我们都知道synchronized关键字的语法含义。多个线程对于同一个对象上的synchronized方法是串行访问的。它是一把双刃剑,在防止并发访问公共数据的同时也对性能产生了影响。究竟synchronized关键字回性能有多大影响,今天我们来做一个小实验。

实验过程 1 写两段简单的代码(SpringMVC)
无synchronized版
@RequestMapping("testSyn")
@ResponseBody
public String testSyn() {
    try {
        Thread.sleep(10);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    return "ok";
}
有synchronized版
@RequestMapping("testSyn")
@ResponseBody
public synchronized String testSyn() {
    try {
        Thread.sleep(10);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    return "ok";
}
用sleep模拟一个需要一小段时间的操作
2 在本机启动web应用 3 对http://127.0.0.1:8080/testSyn接口进行压测

vUser设为99

实验结果
无synchronized版

有synchronized版

实验结果分析

从上面的结果可以发现无synchronized的tps约为有synchronized的5倍,且有synchronized关键字的版本平均响应时间已经超过1秒,严重影响了用户体验。因此在单机同时处理99个vUser的场景时,synchronized关键字会对响应时间有明显的影响。如果当前的服务是为上层其他应用服务的时候则有可能产生大量超时,进而引发雪崩效应。因此在生产环境建议谨慎使用synchronized关键字。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/67200.html

相关文章

  • 值得保存的 synchronized 键字总结

    摘要:无论是互斥锁,还是自旋锁,在任何时刻,最多只能有一个保持者,也就说,在任何时刻最多只能有一个执行单元获得锁。另外在中引入了自适应的自旋锁。和关键字的总结推荐一 该文已加入开源文档:JavaGuide(一份涵盖大部分Java程序员所需要掌握的核心知识)。地址:https://github.com/Snailclimb... 本文是对 synchronized 关键字使用、底层原理、JD...

    miguel.jiang 评论0 收藏0
  • Synchronized锁在Spring事务管理下,为啥还线程不安全?

    摘要:不是线程安全的,那问题出现在哪呢众所周知,方法能够保证所修饰的代码块方法保证有序性原子性可见性。讲道理,如果没有报错的话,应该每个线程都对值进行。 前言 只有光头才能变强。 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 大年初二,朋友问了我一个技术的问题(朋友实在是好学,佩服!) 该问题来源知乎(synchr...

    terro 评论0 收藏0
  • Synchronized 键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTran

    摘要:使用可以禁止的指令重排,保证在多线程环境下也能正常运行。关键字底层原理总结关键字底层原理属于层面。另外在中引入了自适应的自旋锁。自适应的自旋锁带来的改进就是自旋的时间不在固定了,而是和前一次同一个锁上的自旋时间以及锁的拥有者 【强烈推荐!非广告!】阿里云双11褥羊毛活动:https://m.aliyun.com/act/team1111/#/share?params=N.FF7yxCc...

    Vixb 评论0 收藏0
  • 浅谈Java并发编程系列(七) —— 深入解析synchronized键字

    摘要:第一个字被称为。经量级锁的加锁过程当一个对象被锁定时,被复制到当前尝试获取锁的线程的线程栈的锁记录空间被复制的官方称为。根据锁对象目前是否处于被锁定状态,撤销偏向后恢复到未锁定或经量级锁定状态。 Synchronized关键字 synchronized的锁机制的主要优势是Java语言内置的锁机制,因此,JVM可以自由的优化而不影响已存在的代码。 任何对象都拥有对象头这一数据结构来支持锁...

    piglei 评论0 收藏0
  • 深入理解单例模式

    摘要:总结我们主要介绍到了以下几种方式实现单例模式饿汉方式线程安全懒汉式非线程安全和关键字线程安全版本懒汉式双重检查加锁版本枚举方式参考设计模式中文版第二版设计模式深入理解单例模式我是一个以架构师为年之内目标的小小白。 初遇设计模式在上个寒假,当时把每个设计模式过了一遍,对设计模式有了一个最初级的了解。这个学期借了几本设计模式的书籍看,听了老师的设计模式课,对设计模式算是有个更进一步的认识。...

    FuisonDesign 评论0 收藏0

发表评论

0条评论

blastz

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<