多线程(多线程-死锁)_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 多线程(多线程-死锁)

多线程(多线程-死锁)

 2015/3/15 22:11:59  高军威  程序员俱乐部  我要评论(0)
  • 摘要:多线程编写避免死锁死锁代码:代码1:/***线程同步死锁问题**造成原因:线程持a持有一个锁,线程b也持有一个锁,a线程想进入b线程中运行,b线程想*进入a线程中运行,a线程不释放锁,b线程也不释放锁。就这样就成为死锁,程序没有了反应。**/classTestimplementsRunnable{privatebooleanflag;publicTest(booleanflag){this.flag=flag;}@Overridepublicvoidrun(){if(flag)
  • 标签:多线程 线程
线程编写避免死锁
死锁代码:
代码1:
class="java">
/**
 * 线程同步死锁问题
 * 
 * 造成原因:线程持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();
	}
}


运行结果:
上一篇: 【转】jvm 内存调整 下一篇: 没有下一篇了!
发表评论
用户名: 匿名