欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

java死鎖和死循環(huán)

江奕云1年前7瀏覽0評論

在Java編程中,死鎖和死循環(huán)是兩個常見的問題,它們會導(dǎo)致程序無法正常執(zhí)行。下面我們分別來介紹一下死鎖和死循環(huán)。

死鎖:

public class Deadlock{
private static Object lock1 = new Object();
private static Object lock2 = new Object();
public static void main(String[] args){
new Thread(){
public void run(){
synchronized(lock1){
System.out.println("Thread 1 acquired lock 1");
try{
Thread.sleep(100);
}catch(Exception e){}
System.out.println("Thread 1 waiting for lock 2");
synchronized(lock2){
System.out.println("Thread 1 acquired lock 2");
}
}
}
}.start();
new Thread(){
public void run(){
synchronized(lock2){
System.out.println("Thread 2 acquired lock 2");
try{
Thread.sleep(100);
}catch(Exception e){}
System.out.println("Thread 2 waiting for lock 1");
synchronized(lock1){
System.out.println("Thread 2 acquired lock 1");
}
}
}
}.start();
}
}

在上面的代碼中,我們創(chuàng)建了兩個線程,每個線程都嘗試獲取兩個鎖。同時,線程1先獲取鎖1,然后在等待獲取鎖2。線程2則先獲取鎖2,然后在等待獲取鎖1。這樣就會導(dǎo)致死鎖的產(chǎn)生。

死循環(huán):

public class InfiniteLoop{
public static void main(String[] args){
int num = 0;
while(num< 10){
System.out.println("This loop will never stop!");
num--;
}
}
}

在上面的代碼中,我們使用了一個while循環(huán),不過我們在循環(huán)中每次減去1,這樣會導(dǎo)致num永遠(yuǎn)小于10,因此循環(huán)永遠(yuǎn)不會停止。