一. semaphore實現訊號燈
semaphore可以控制同時訪問資源的執行緒個數, 例如: 實現乙個檔案允許的併發訪問數.
semaphore實現的功能就類似廁所有5個坑, 加入有十個人要上廁所, 那麼同時只能有5個人能夠占用, 當5個人中的任何乙個人離開後, 其中在等待的另外5個人中就有乙個可以占用了. 另外等待的5個人中可以是隨機獲得優先機會,
也可以使按照先來後到的順序獲得機會, 這取決於構造semaphore物件時傳入的引數選項.
/*** semaphore:訊號燈
*/public class semaphoretest catch (interruptedexception e)
}});
} }}單個semaphore物件可以實現互斥鎖的功能, 並且可以是由乙個執行緒獲得了"鎖", 再由另乙個執行緒釋放"鎖", 這可應用於死鎖恢復的一些場合.
public class cyclicbarriertest catch (exception e)
}});
} service.shutdown();
}}
JDK5新特性 列舉
一些程式在執行時,他需要的資料不能是任意的,而必須是一定範圍內的值,jdk5以前採用自定義類來解決,jdk5以後可以直接採用列舉解決。在jdk5之後,使用enum關鍵字定義一種新的型別,稱為列舉型別。enum類和enum關鍵字 使用enum關鍵字定義的列舉類,實際上就相當於定義了乙個類,此類繼承了e...
JDK5新特性之執行緒鎖技術(二)
一.lock實現執行緒同步互斥 lock比傳統執行緒模型中的synchronized方式更加物件導向,與生活中的鎖類似,鎖本身也是乙個物件。兩個執行緒執行的 片段要實現同步互斥的效果,他們必須用同乙個lock物件。鎖是上在代表要操作的資源的類的內部方法中,而不是執行緒 中。public class ...
JDK5的新特性可變引數
package cn.itcast 06 可變引數 在定義方法的時候我不知道定義多少個元素 格式 修飾符 返回值型別 方法名 資料型別.變數名 注意 這裡的變數是乙個陣列 如果乙個方法有可變引數,並且有多個引數,那麼,可變引數一定是最後乙個 因為可變引數前面的依次賦值,剩下的全部給可變引數 publ...