原创 ScheduledExecutorService 接口

newScheduledThreadPool() 或者newSingleThreadScheduled-Executor()方法:延遲執行、週期性執行的執行器                      如果想在某一段時間之後執行線程操作,

原创 Condition接口的用法和示例

條件變量:線程進入臨界區域後,往往需要等待滿足某個條件才能繼續執行。例如,消費者需要等待緩衝區有產品後才能消費,用戶只有在銀行賬戶上有金額的時候能能取款等。         在JDK1.5之前,主要用wait()、notify()和not

原创 CountDownLatch類 多線程之倒計時門閂

    倒計時門閂就像一個帶計數開關的門,只有在門前等待的線程數量達到一定的數量時,門閂纔會打開,線程纔可以繼續執行。     實現類:     CountDownLatch,該類從Object繼承而來,可以通過一個給定的值進行初始化,通

原创 CyclicBarrier類-線程同步障柵的使用和示例

障柵相當於程序中的一個集合點,當結果在中間步驟需要整合的時候會經常用到,當線程需要等待其他線程時,可以讓該線程運行到障柵處,一旦所有線程都到達了這個障柵,障柵就撤銷,線程可以繼續向下運行。     障柵     Cyclicbarrier

原创 線程本地化的變量ThreadLocal

 ThreadLacal類是實現線程的本地化的對象 使用此類ThreadLocal將會使變量在每個線程的私有區域內有一個副本,每個線程都可以相對獨立地改變自己的副本,而不影響其他線程的副本。 總的來理解的話就是ThreadLocal這個類

原创 Callable 和 Runnable的區別

1)Callable是有返回值的,而Runnable是沒有返回值的。 2)Callable執行入口的方法是call(),Runnable執行方法的入口是run(); 3)call()方法可以拋出異常,run()方法不可以 4)運行Call

原创 SpringBooot框架 ServlerConxtextListener的方法實現和註解實現的區別

廢話不說,直接碼上: import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootA

原创 死鎖和活鎖以及各種鎖機制的比較

    synchroniezd 同步鎖時一種互拆鎖。主要通過同步方法或者同步塊的形式來使用同步鎖。 同步鎖的優點是形式簡單,易於理解和使用。但是同步鎖依賴於隱藏在對象後的內置監視器,比較抽象,不怎麼直觀。          Reetr

原创 可重入鎖 ReentrantLock

    可重入鎖是一種無阻塞的同步機制, java.util.concurrent.locks包下     public class ReentrantLock extends Object implements Lock,Serial

原创 Exchanger(線程間的數據交換)交換器

    從JDK1.5版本開始開始提供線程間數據交換的功能,該功能可以通過Exchanger類完成。     Exchanger 類 定義:     public class Exchanger<V> extends Object   

原创 RejectedExceptionHandler 管理被拒絕的任務

可以通過方法shutdown()關閉執行器,在調用該方法後,執行器將等待那些正在運行或正在等待的任務完成,然後才能真正的關閉執行器,關閉後的執行器將不再接收新的任務。由於關閉執行器有一定的時間延遲,很可能             在提交了

原创 ScheduledExecutorService接口

newScheduledThreadPool() 或者newSingleThreadScheduled-Executor()方法:延遲執行、週期性執行的執行器                      如果想在某一段時間之後執行線程操作,

原创 JDK1.8 郵戳鎖(StampedLock)知識點整理以及示例

郵戳鎖時JDK1.8版本後引入的一種鎖機制,與ReentrantRead-WriteLock類似,該鎖可以用於控制讀寫訪問。     public class StampeLock extends Object implements Se

原创 Fork/Join框架 任務的運行方式以及示例

Fork /Join框架提供了一種更爲有效的任務管理方式,當ForkJoinPool執行ForkJoinTask任務時可以採用同步或者異步的運行方式。         當採用同步運行方式時,把任務交給ForkJoinPool處理後不會立即

原创 Executors 使用線程執行器處理有返回值的線程 處理Callable的實現類

有返回值的線程定義需繼承Callable接口,然後將線程交給執行器,提交線程需要使用submit()方法。 demo 示例:        使用線程執行器處理有返回值的線程                  某駕校有4輛考試車,有8個學生