线程死锁
死锁: 是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。
Java线程死锁样例
由于在该类中,o1和o2都用“synchronized”修饰,导致同一时间只允许一个线程执行当前代码块,两个线程都在等待对方执行完毕,所以形成了线程死锁。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
public class TestBolock { public static void main(String[] args) { TR t1 = new TR(); t1.i = 1; TR t2 = new TR(); t1.start(); t2.start(); } } class TR extends Thread { public static Object o1 = new Object(); public static Object o2 = new Object(); public int i = 0; @Override public void run() { if(i==0) { synchronized (o1) { System.out.println("o1"); synchronized (o2) { System.out.println("o2"); } } }else { synchronized (o2) { System.out.println("o2"); synchronized (o1) { System.out.println("o1"); } } } } } |
- 本文固定链接: https://blog.kuoruan.com/29.html
- 转载请注明: Index 于 扩软博客 发表
捐 赠如果您觉得这篇文章有用处,请支持作者!鼓励作者写出更好更多的文章!
Hi there, I check your JAVA线程死锁样例 | 扩软博客 new stuff on a regular basis. Your writing style is awesome, keep up the good work! situs poker uang asli http://feraripoker.com/