阅读背景:

多线程(多线程-死锁)

来源:互联网 

多线程编写避免逝世锁
逝世锁代码:
代码1:

/**
 * 线程同步逝世锁问题
 * 
 * 造成缘由:线程持a持有一个锁,线程b也持有一个锁,a线程想进入b线程中运行,b线程想
 * 进入a线程中运行,a线程不释放锁,b线程也不释放锁。就这样就成为逝世锁,程序没有了反响。
 * */
class Test implements Runnable
{
	private boolean flag;
	public Test(boolean flag) {
		this.flag=flag;
	}
	@Override
	public void run() 
	{
		if(flag)
		{
			synchronized (Mylock.locka) {
				System.out.println("if locka");
				synchronized (Mylock.lockb) {
					System.out.println("if lockb");
				}
			}
		}
		else 
		{
			synchronized (Mylock.lockb) {
				System.out.println("else lockb");
				synchronized (Mylock.locka) {
					System.out.println("else locka");
				}
			}
		}
	}
}
//锁类
class Mylock
{
	static Object locka = new Object();
	static Object lockb = new Object();
}
//测试
class DeathLockDemo{
	public static void main(String[] args) {
		Thread t1 = new Thread(new Test(true));
		Thread t2 = new Thread(new Test(false));
		
		t1.start();
		t2.start();
	}
}

/**
 * 线程同步逝世锁问题
 * 
 * 造成




你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: