《併發的挑戰》學習標註
多線程是我覺得初入JAVA中的一個難點,之前一直知道線程有阻塞死鎖的狀態,但是很抽象,但是真的讓我自己寫一個死鎖的例子,我還真的有點下筆難的感覺,今天看到這本書的第一章,就學習到了一個簡單的線程死鎖例子,在這裏分享出來:
public class DeadLockDemo {
private static String A = "A";
private static String B = "B";
public static void main(String[] args){
new DeadLockDemo().deadLock();;
}
private void deadLock(){
Thread t1=new Thread(new Runnable() {
public void run() {
synchronized (A) {
try {
System.out.println("A1");
Thread.currentThread().sleep(2000);
} catch (Exception e) {
// TODO: handle exception
}
synchronized (B) {
System.out.println("B1");
}
}
}
});
Thread t2=new Thread(new Runnable() {
public void run() {
synchronized (B) {
System.out.println("B2");
synchronized (A) {
System.out.println("A2");
}
}
}
});
t1.start();
t2.start();
}
}
運行之後可以看到輸出結果爲:
A1
B2