写一个死锁案例
写一个死锁案例
- 死锁的描述
- 写一个死锁
死锁的描述
死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。
写一个死锁
先创建两个对象a、b,对应两个线程1、2。线程1先锁住a对象再锁住b对象,线程2先锁住b对象再锁a对象,为了死锁的发生各线程需要再两把锁直接等待一定时间,确保两个线程都能获取一把锁,而到获取第二把锁时就会相互等待,从而造成死锁情况。
private static Object a = new Object();private static Object b = new Object();public static void main(String[] args) {// 线程1new Thread(() -> {synchronized (a) {try {Thread.sleep(1000);synchronized (b) {}} catch (InterruptedException e) {e.printStackTrace();}}}).start();// 线程2new Thread(() -> {synchronized (b) {try {Thread.sleep(1000);synchronized (a) {}} catch (InterruptedException e) {e.printStackTrace();}}}).start();}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
