死锁概念: 互相争抢同一个锁
代码:
OtherService:
package com.xiangcai.concurrency;
public class OtherService {
private final Object lock = new Object();
private DeadLock deadLock;
public void s1 (){
synchronized (lock){
System.out.println("s1++++++");
}
}
public void s2 (){
synchronized (lock){
System.out.println("s2++++++");
deadLock.m2();
}
}
public void setDeadLock(DeadLock deadLock) {
this.deadLock = deadLock;
}
}
DeadLock:
package com.xiangcai.concurrency;
public class DeadLock {
private OtherService otherService;
public DeadLock(OtherService otherService){
this.otherService = otherService;
}
private final Object lock = new Object();
public void m1() {
synchronized (lock) {
System.out.println("m1");
otherService.s1();
}
}
public void m2(){
synchronized (lock){
System.out.println("m2");
}
}
}
DeadTest:
package com.xiangcai.concurrency;
public class DeadTest {
public static void main(String[] args) {
OtherService otherService = new OtherService();
DeadLock deadLock =new DeadLock(otherService);
otherService.setDeadLock(deadLock);
new Thread(){
@Override
public void run() {
while (true){
deadLock.m1();
}
}
}.start();
new Thread(){
@Override
public void run() {
while (true){
otherService.s2();
}
}
}.start();
}
}
分析:
cmd jps 找对应的进程:
就stack 8982