线程分析篇 Java 语言能够很好的实现多线程应用程序。当对一个多线程应用程序进行调试或者开发后期做性能调优的时候,往往需要了解当前程序中所有线程的运行状态,是否有死锁、热锁等情况的发生,从而分析系统可能存在的问题。 在 VisualVM 的监视标签内,可以查看当前应用程序中所有活动线程(Live ...
分类:
其他好文 时间:
2020-02-12 14:34:51
阅读次数:
76
[toc] 1.redis的应用场景 商品秒杀 点赞等 现在有一个减少商品的场景,我们很容易能写出其代码 但是有一个问题,该程序单机下线程不安全。不过可以解决:加锁 加锁解决了单机的线程安全的问题,但是在集群的情况下线程依旧不安全,因为集群的情况下有多个服务器同时运行那么依然会产生线程安全问题; 因 ...
分类:
编程语言 时间:
2020-02-08 00:10:07
阅读次数:
100
1、#define N 5 + 5 求 k = N*N*5 错误解法:10*10*5 = 500 正解(重点:注意黄色部分):5 + 5 * 5 + 5 * 5 = 55 2、死锁的必要条件: 1、相互排斥使用(资源独占) 一个资源每次仅仅能给一个进程使用 2、不可强占(不可剥夺) 资源申请者不能强 ...
分类:
编程语言 时间:
2020-02-07 16:52:43
阅读次数:
85
JVM锁: jmate MySql锁: 1、查询有哪些再用的表被锁了 show open tables where in_use = 0; 2、被锁的这些表中如果有你要使用的表,那么释放。 unlock tables; ...
分类:
其他好文 时间:
2020-02-07 15:02:48
阅读次数:
65
线上系统突然变得卡顿或无法访问,排除网络异常的情况下,检查服务器资源占用情况,如果CPU、内存、磁盘IO等资源占用过高,就会导致无法继续处理HTTP请求。 如果是CPU占用飙高,有可能是程序中存在死循环、死锁导致的,也有可能是内存紧张从而频繁GC导致的,要具体问题具体分析。 排查过程 这里记录一次线 ...
分类:
其他好文 时间:
2020-02-06 11:07:57
阅读次数:
75
死锁: 多个线程各自占有一些共享资源,并且互相等待其他线程占有的资源才能运行,而导致两个或者多个线程都在等待对方释放资源,都停止执行的情形。某一个同步块同时拥有"两个以上对象的锁"时,就可能会发生"死锁"的问题。 思路: 首先要有两个对象口红 Lipstick 类 和镜子 Mirror 类 然后需要 ...
分类:
编程语言 时间:
2020-02-04 20:27:16
阅读次数:
77
Python程序中的线程操作 锁 [TOC] 一、同步锁 1.1 多个线程抢占资源的情况 结果可能为: 99 1.1.1 对公共数据的操作 1.2 同步锁的引用 结果肯定为:0 1.3 互斥锁与join的区别 二、死锁与递归锁 进程也有死锁与递归锁,在进程那里忘记说了,放到这里一起说了。 所谓死锁: ...
分类:
编程语言 时间:
2020-02-04 11:04:56
阅读次数:
85
1. mysql有三种锁的级别? 表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。 行级锁:开销大,加锁慢;会出现死锁;锁定粒度小,发生锁冲突的概率最低,并发度也最高。 页面锁:开销和加锁时间介于表级锁和行级锁之间;会出现死锁;锁定粒度介于表级锁和行级锁之间,并发 ...
分类:
数据库 时间:
2020-02-03 22:24:57
阅读次数:
88
问题描述 如果java层面发生了死锁,当我们使用jstack命令的时候其实是可以将死锁的信息给dump出来的,在dump结果的最后会有类似Found one Java-level deadlock:的关键字,接着会把发生死锁的线程的堆栈及对应的同步锁给打印出来,这次碰到一个系统就发生类似的问题,不过 ...
分类:
其他好文 时间:
2020-02-03 18:53:07
阅读次数:
53
前面说了并发任务之间的分工和协作,现在说并发任务之间同样很重要,甚至更重要的一个方面,互斥。因为分工、协作和互斥这三个方面,从重要性上来讲,或许可以三分天下,但从复杂性和可探讨性来讲,互斥显然更胜一筹,对互斥的深入使用,更加体现了一个人的并发编程能力。 互斥,即同一时间只能有一个并发任务可以对数据的 ...
分类:
编程语言 时间:
2020-02-01 10:24:39
阅读次数:
98