原创 Thinking in Java學習筆記 Semaphore控制的資源池
SemaphoreDemo.java 一個資源池Pool,可以由多個線程檢出和檢入其中的資源,由Semaphore控制同步問題,由數組來記錄每個資源的檢出/檢入狀態 CheckoutTask這個線程,啓動多個,負責檢入檢出資源。 資源
原创 Thinking in Java學習筆記,簡單包裝Thread,實現快速實現線程
package com.test.concurrent; public class SimpleThread extends Thread { private static int counter=0; private int co
原创 Thinking in Java學習筆記ScheduledThreadPoolExecutor
溫室的開燈、關燈、開水、關水、白天熱電、夜晚熱電、收集數據(時間溫度溼度) ScheduledThreadPoolExecutor的schedule(event, delay, TimeUnit.MILLISECONDS)方法,在dela
原创 Thinking in Java學習筆記,使用Exchanger交換資源
生產者生產出的產品放入生產者隊列,消費者等待消費者隊列和生產者隊列完成交換 package com.test.concurrent; import java.util.ArrayList; import java.util.List
原创 Thingking in Java學習筆記 wait() notifyAll()
共享資源是汽車Car,需要不斷的打蠟waxed()和拋光buffed(),waxed()要等待buffed()完成,buffed()又要等待waxed()完成 <pre name="code" class="java">package
原创 Thinking in Java學習筆記 Thread.UncaughtExceptionHandler接口實現捕獲線程內異常
實現自定義類來實現Thread.UncaughtExceptionHandler接口,在unCaughtExceptionHandler方法中編寫自已需要的處理代碼 實現自定義的ThreadFactory,newThread的時候調用se
原创 Thinking in Java學習筆記 Lock在處理結構上的優越性,相對於synchronized
Lock使用時,使用try..finally..語句,在finally中Lock.unLock來釋放鎖,同時可以在處理失敗的情況下,在finally語句中做優雅的處理 而synchronized語句則無法優雅的結束,發生異常直接退出了 同
原创 Thinking in Java學習筆記 吐司的製作和消費過程
多個LinkedBlockingQueue隊列,每個流程都有一個或兩個隊列,從上一個流程的隊列中獲取吐司,本流程處理完畢之後放入下一流程的隊列 每個流程通過LinkedBlockingQueue.take()方法取隊列中的任務時,如果上一
原创 Thinking in Java學習筆記
LinkedBlockingQueue ArrayBlockingQueue SynchronizedBlockingQueue TestBlockingQueue.java package com.test.concurrent;
原创 Thinking inJava學習筆記 HorseRace.java
HorseRace.java 每個horse每走一步,都會停下來等待其他horse完成這一步操作 cyclicBarrier的線程會在每一步所有horse完成操作後執行一次 package com.test.concurrent; im
原创 Java併發多線程常用包、類和接口
Java.util.concurrent.locks.Lock Lock接口 ReadWriteLock接口 Condition接口 ReentrantLock Ja
原创 Thinking in Java學習筆記 CountDownLatch(CountDownLatchDemo.java)
CountDownLatchDemo.java 每個任務線程完成一部分工作,完成後通過CountDownLatch來通知總線程, 總線程通過CountDownLatch.await()等待所有子線程完成操作後,再結束 package co
原创 Thinking in Java學習筆記 synchronized同步方法和synchronized同步塊
對象的兩個synchronized方法被兩個線程分別調用,在一個獲取到鎖的情況下,另一個synchronized方法需要等待第一個synchronized方法執行完畢才能獲得鎖開始執行。 也就是說,一個對象實例只有一個鎖,所有的synch
原创 Thinking in Java學習筆記 DelayQueue和Delayed接口
DelayedTask線程要實現Delayed接口的getDelay()和compareTo()方法,放入DelayQueue隊列後,通過take()方法取出時,可根據compareTo方法制定的順序來優先取出線程執行 靜態類EndSe
原创 Thinking In Java學習筆記之目錄實用工具
遞歸的方式遍歷目錄,將文件和目錄分別保存在不同的list之中,支持正則表達式來過濾文件 package com; import java.io.File; import java.io.FilenameFilter; import