freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

java培訓-java高并發(fā)大全(編輯修改稿)

2024-10-21 04:27 本頁面
 

【文章內容簡介】 public class IdGenerator {private final AtomicLong sequenceNumber = new AtomicLong(0)。public long next(){return ()。} } 顯示鎖基于synchronized關鍵字的鎖機制有以下問題:鎖只有一種類型,而且對所有同步操作都是一樣的作用 鎖只能在代碼塊或方法開始的地方獲得,在結束的地方釋放 線程要么得到鎖,要么阻塞,沒有其他的可能性Java 5對鎖機制進行了重構,提供了顯示的鎖,這樣可以在以下幾個方面提升鎖機制:可以添加不同類型的鎖,例如讀取鎖和寫入鎖 可以在一個方法中加鎖,在另一個方法中解鎖可以使用tryLock方式嘗試獲得鎖,如果得不到鎖可以等待、回退或者干點別的事情,當然也可以在超時之后放棄操作 ,主要有兩個實現類:ReentrantLock在讀操作很多寫操作很少時性能更好的一種重入鎖對于如何使用顯示鎖,可以參考我的Java面試系列文章《Java面試題集5170》中第60題的代碼。只有一點需要提醒,解鎖的方法unlock的調用最好能夠在finally塊中,因為這里是釋放外部資源最好的地方,當然也是釋放鎖的最佳位置,因為不管正常異??赡芏家尫诺翩i來給其他線程以運行的機會。CountDownLatchCountDownLatch是一種簡單的同步模式,它讓一個線程可以等待一個或多個線程完成它們的工作從而避免對臨界資源并發(fā)訪問所引發(fā)的各種問題。下面借用別人的一段代碼(我對它做了一些重構)來演示CountDownLatch是如何工作的。import 。/** * 工人類* @author 駱昊* */ class Worker {private String name。// 名字private long workDuration。// 工作持續(xù)時間/*** 構造器*/public Worker(String name, long workDuration){ = name。 = workDuration。}/*** 完成工作*/public void doWork(){(name + “ begins to work...”)。try {(workDuration)。// 用休眠模擬工作執(zhí)行的時間} catch(InterruptedException ex){()。}(name + “ has finished the job...”)。} } /** * 測試線程* @author 駱昊* */ class WorkerTestThread implements Runnable {private Worker worker。private CountDownLatch cdLatch。public WorkerTestThread(Worker worker, CountDownLatch cdLatch){ = worker。 = cdLatch。}@Overridepublic void run(){()。// 讓工人開始工作()。// 工作完成后倒計時次數減1} } class CountDownLatchTest {private static final int MAX_WORK_DURATION = 5000。// 最大工作時間private static final int MIN_WORK_DURATION = 1000。// 最小工作時間// 產生隨機的工作時間private static long getRandomWorkDuration(long min, long max){return(long)(()*(max1)。// 如果有N個哲學家,最多只允許N1人同時取叉子}/*** 取得叉子* @param index 第幾個哲學家* @param leftFirst 是否先取得左邊的叉子* @throws InterruptedException*/public static void putOnFork(int index, boolean leftFirst)throws InterruptedException {if(leftFirst){forks[index].acquire()。forks[(index + 1)% NUM_OF_PHILO].acquire()。}else {forks[(index + 1)% NUM_OF_PHILO].acquire()。forks[index].acquire()。}}/*** 放回叉子* @param index 第幾個哲學家* @param leftFirst 是否先放回左邊的叉子* @throws InterruptedException*/public static void putDownFork(int index, boolean leftFirst)throws Interrup
點擊復制文檔內容
物理相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1