坑人的Synchronized,请慎用!
为什么说坑人呢,因为在同一个项目里面遇到两个坑了。
1、其中的原因都是一样的:一个类中有多个方法是同步的,线程A调用了其中一个同步方法,然后线程B在去尝试调用其他的同步方法就会出现阻塞的问题。一般情况下阻塞一会是正常的,但是如果线程A里面阻塞时间太长就会严重影响线程B的执行。
我的项目里面的情况就是线程A陷入了死循环导致不释放锁从出现上述问题,而线程A陷入死循环的原因又是其他问题导致的;
2、这个项目与摄像有关,所以一开始还以为是视频生成或者摄像头的问题,搞了半天,不过在查找是否是摄像头录像问题的时候使用到了假设性原则,即假设确实是这个问题导致的,然后在通过其他点其他路径去确认是否真的是这个问题,比如说有关代码是否都有try,如果有就不会影响其他功能也就表示这个猜想八成是错的。
解决问题的一般方法:
首先根据功能逻辑以及问题的表现形式大概判断问题的范围,然后用下面的方法进一步处理:
a)查看日志,我们要学会正确打印日志的姿势。比如在一个核心方法开头输出一条日志表示进入了那个方法或者遇到分支的情况也需要打印一条日志表示进入哪条分支以便后期分析问题,我们可以在日志文件中快速定位到出问题的日志附近,同时还可以快读定位到有问题的代码附近。
b)另外一种就是调试或者直接分析代码啦。
目的就一个:就是快速定位到问题点,提高解决问题的效率。
坑人的Synchronized,请慎用!相关推荐
- 发个真正高效清理垃圾的脚本(请慎用,效果很强)
发个真正高效清理垃圾的脚本(请慎用,效果很强) 请复制以下内容到文本文档中,并修改后缀名为*.BAT ************分割线******请复制以下内容******** @echo off co ...
- 药名上如有这10个字请慎用!用错了会对身体带来更大伤害
来源:广州日报(guangzhoudaily).人民网.央视财经.惠州日报 1. 药物慎用 生病吃药,除疗效外,你是否关注"副作用"?买药时,药盒上有这10个字慎买.药名上 ...
- 小孩发烧请慎用抗病毒类药物!
请父母们.医生们注意了,我最近发现在我的小孩感冒输液时验证出一个问题,那就是她对抗病毒类药物(如热毒宁)有很强的过敏反应,甚至导致高烧抽筋. 我的小孩今年2岁.1月21日傍晚患急性咽炎发烧至38度左右 ...
- 习惯也有坑人时,请主动规避
疫情期间为了流量管控,公司门前广场的咖啡店大门被关闭,要想去买一杯咖啡则需要从广场美食城的一头走到另一头,计时约5分钟.然后举着小蓝杯再从一干食客中穿行而出,坐在广场的石阶上,晒着阳光,悠悠的度过一段 ...
- 秒杀商品超卖事故:Redis分布式锁请慎用!
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:浪漫先生 来源:juejin.im/post/6854573 ...
- 飞天茅台超卖事故:Redis分布式锁请慎用!
" 基于 Redis 使用分布式锁在当今已经不是什么新鲜事了.本篇文章主要是基于我们实际项目中因为 Redis 分布式锁造成的事故分析及解决方案. 图片来自 Pexels 背景 我们项目中的 ...
- 飞天茅台超卖P0事故:请慎用Redis分布式锁!
" 基于 Redis 使用分布式锁在当今已经不是什么新鲜事了.本篇文章主要是基于我们实际项目中因为 Redis 分布式锁造成的事故分析及解决方案. 图片来自 Pexels 背景 我们项目中的 ...
- oracle rebuild online,rebuild online 请慎用
好多初级DBA很喜欢用reuildonline重建索引,他们认为这样做不会影响业务. 曾经发生的几次故障,在业务用的时候,rebuild online索引,导致大部分业务无法使用,数据库hang. 其 ...
- java renameto_请慎用java的File#renameTo(File)方法(转)
以前我一直以为File#renameTo(File)方法与OS下面的 move/mv 命令是相同的,可以达到改名.移动文件的目的.不过后来经常发现问题:File#renameTo(File)方法会返回 ...
最新文章
- 【书评】OSPF Anatomy of an Internet Routing Protocol
- 已知思科ASA设备漏洞仍在其新版本中存在
- class传参 python_Python类的概念、定义、属性、继承
- SpringBoot中fastJson返回数据展示null字段(响应值为null时字段被过滤)
- JavaScript 存储Cookie
- 279. Perfect Squares
- 待熟悉的工具或API清单列表
- 研发工程师为你详解山寨机、品牌机和水货机
- 【机器学习15】决策树模型详解
- java 执行bat文件
- Acer宏碁笔记本触摸板失效解决方法
- VTK学习之激光点云动态库封装(排水管道)
- wex5 php开发,WeX5开发移动APP(SQLite本地数据优化)
- obj[key].obj['key'],obj.key的区别
- 神经网络(线性神经网络、Delta学习规则)
- 基于阿里云物联网平台的设备之间传输十六进制数据
- css超出显示...(单行、多行)
- MySql 中 PK、NN、UQ、BIN、UN、ZF、AI、G分别代表什么意思
- 生成drl文件_drools原生drl规则文件的使用
- 【Python自动化Excel】pandas处理Excel的拆分、合并
热门文章
- 瑞萨e2studio(20)----更新FSP版本
- MATLAB中的subs函数nbsp;符号替代函数
- 设置python matplotlib pyplot grid画图格子
- Gazebo导入SolidWorks模型
- Grafana初步搭建和使用
- java se 8 for_Java SE 8 for the Really Impatient读书笔记——Java 8 Lambda表达式
- 51单片机开发实例 基于51单片机的光控灯
- 我喜欢的欧美金属乐队
- 4G/5G 执法记录仪产品方案介绍
- 宏定义开关和debug printf,宏定义使用异或交换两数