/*** 演示线程的死锁问题
* 死锁的理解:不同的线程分别占用对方需要的同步资源不放弃,都在等待对方放弃自己需要的同步资源,就形成了死锁
*@authororz*/
public classThreadTest {public static voidmain(String[] args) {
StringBuffer s1=newStringBuffer();
StringBuffer s2=newStringBuffer();newThread(){
@Overridepublic voidrun() {synchronized(s1)
{
s1.append("a");
s2.append("1");try{
Thread.sleep(100);
}catch(Exception e)
{
e.printStackTrace();
}synchronized(s2)
{
s1.append("b");
s2.append("2");
System.out.println(s1);
System.out.println(s2);
}
}
}
}.start();new Thread(newRunnable() {
@Overridepublic voidrun() {synchronized(s2)
{
s1.append("c");
s2.append("3");try{
Thread.sleep(100);
}catch(Exception e)
{
e.printStackTrace();
}synchronized(s1)
{
s1.append("d");
s2.append("4");
System.out.println(s1);
System.out.println(s2);
}
}
}
}).start();
}
}