欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > > 文章正文

JavaSE编程案例系列(8~100)——死锁现象,javase案例

来源: javaer 分享于  点击 1921 次 点评:272

JavaSE编程案例系列(8~100)——死锁现象,javase案例


造成死锁现象的案例分析

在实际开发中要避免着中要避免这种死锁的问题。

public class LockA {
		private LockA(){
			
		}
		public static final LockA lockA = new LockA();
}
  1. 创建锁B
public class LockB {
		private LockB(){
			
		}
		public static final LockB lockB = new LockB();
}
  1. 实现死锁
public class DeathLock implements Runnable{
		private int i = 0;
		public void run(){
			while(true){
				if(i++ % 2 == 0){
					synchronized (LockA.lockA) {
						System.out.println("if ... locka");
						synchronized (LockB.lockB) {
							System.out.println("if....lockb");
						}
					}
				}else {
					synchronized (LockB.lockB) {
						System.out.println("else...lockb");
						synchronized (LockA.lockA) {
							System.out.println("else...locka");
						}
					}
				}
				
			}
		}
}
  1. 开启死锁
public class DeathLockDemo {
		public static void main(String[] args) {
			DeathLock dl = new DeathLock();
			Thread t0 = new Thread(dl);
			Thread t1 = new Thread(dl);
			t0.start();
			t1.start();
		}
}

线程死锁的图解:


相关文章

    暂无相关文章

用户点评