1.死锁的定义
多个线程因为竞争资源导致堵塞,如果没有外力这种阻塞会一致持续下去,这种现象叫做死锁。
2.死锁的例子
P1 P2 R1 R2
P1线程获取R1后,获取R2,正常工作
P2线程获取R2后,获取R1,正常工作
当P1获取R1,P2获取到R2时,他们的资源都不放手,就会出现死锁
3.logback死锁
Name: MSC service thread 1-1
State: BLOCKED on java.io.PrintStream@5f820eee owned by: ServerService Thread Pool – 61
Total blocked: 223 Total waited: 231
Name: ServerService Thread Pool – 61
State: WAITING on java.util.concurrent.locks.ReentrantLock$NonfairSync@4ec68cb4 owned by: MSC service thread 1-1
Total blocked: 2 Total waited: 4
Name: RMI TCP Connection(1)-10.96.36.21
State: WAITING on java.util.concurrent.locks.ReentrantLock$NonfairSync@4ec68cb4 owned by: MSC service thread 1-1
Total blocked: 0 Total waited: 1
https://jira.qos.ch/browse/LOGBACK-1378
4.logback死锁解决方案
4.1不把日志打印到控制台
4.2升级版本