產生死鎖的四個必要條件:
(1) 互斥條件:乙個資源每次只能被乙個程序使用。
(2) 請求與保持條件:乙個程序因請求資源而阻塞時,對已獲得的資源保持不放。
(3) 不剝奪條件:程序已獲得的資源,在末使用完之前,不能強行剝奪。
(4) 迴圈等待條件:若干程序之間形成一種頭尾相接的迴圈等待資源關係。
(一)對於第二種情況
public
class
locktest
implements
runnable catch (interruptedexception e)
synchronized (o2)
} } else catch (interruptedexception e)
synchronized (o1)
} }
}
public
static
void
main(string args)
}
(二)對於第四種情況
public
class
locktest
implements
runnable catch (interruptedexception e)
synchronized (o2)
} } else
if(flag==2) catch (interruptedexception e)
synchronized (o3)
} }
else catch (interruptedexception e)
synchronized (o1)
} }
}
public
static
void
main(string args)
}
例子不難看懂,面試的時候有可能要求當場就要寫。 快排的java兩種實現方式
快排是最基礎的幾個排序演算法之一,今天再來回顧下 public class quicksort private static void quicksort int array,int beg,int end 上面就是快排主要的框架,最重要就是partition方法,它是劃分並找到下次分割排序的位置p...
Java實現執行緒阻塞的兩種方式
最近參加公司的乙個hackson比賽的時候,需要當前執行緒阻塞,並開啟乙個新的執行緒執行任務,任務執行完成後,再返回結果。執行緒相關的東西,用的都比較膚淺,所以當時只能在網上找了一堆文章,發現很多講得比較繁瑣,感覺如果單純的實現該需求的話,用本文中的兩種方式是最簡單的了。實現方式一,也是最簡單的就是...
單例模式(java兩種方式實現)
測試類 public class singletontest1 單例類 class singleton 構造方法私有帶來乙個問題,就是不能產生例項了,所以通過寫乙個方法返回乙個例項 第二步 public static singleton getinstance 必須為static 這樣在main中才...