我所經歷的Java線程,特別是僵局的概念,我發現這下面的代碼:請解釋僵局概念
public static void main(String... a) {
final String o1 = "Lock ";
final String o2 = "Step ";
Thread th1 = new Thread() {
public void run() {
while (true) {
synchronized (o1) {
synchronized (o2) {
System.out.println(o1 + o2);
}
}
}
}
};
Thread th2 = new Thread() {
public void run() {
while (true) {
synchronized (o2) {
synchronized (o1) {
System.out.println(o2 + o1);
}
}
}
}
};
new Thread(th1).start();
new Thread(th2).start();
}
請解釋什麼程序做按我的理解鎖已經採取一個線程,並試圖採取另一個鎖,並通過其他線程完成相同的,當最後當我們開始兩個線程都卡住了,是否有任何其他方式來創建上述程序的死鎖,請告知,還有鎖正在採取上面的代碼是它的實例級鎖。
爲了發生死鎖,你應該改變順序(線程1獲取o1,然後o2,而thread2獲取o2,然後o1)。 – assylias 2012-04-17 13:38:14
我已經做到了..buddy .. !! – user1338319 2012-04-17 13:40:13