原创 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