原创 多線程併發導致CPU100%的一種原因和解決辦法

在用自定義線程池的時候,遇到cpu100%,經過驗證後,發現問題來源於我定義的子線程。  子線程的主要功能是從任務隊列(LinkedBlockingQueue)裏面持續拿出任務,並且執行。  以下爲令CPU100的代碼。 private

原创 解決虛擬機選擇橋接模式連不上網

虛擬機裝的 centos 7,使用橋接模式,且與主機在同一網段, 主機與虛擬機可以互相ping通,且主機使用secureCRT可以連接虛擬機。 主機可以上網,但是虛擬機裏centos就是連不上網,以前都可以上網。 再查了一堆資料都沒解決後

原创 SimpleDateFormat 的線程安全問題

SimpleDateFormat 的作者在源碼中就提到: * Date formats are not synchronized. * It is recommended to create separate format instan

原创 LockSupport

LockSupport  是提供比較底層的掛起阻塞線程的操作原語。 有點類似於suspend()。主要的接口有 LockSupport .park() 顧名思義park停車,就是把一個現場掛起。 LockSupport .unpark(t

原创 CyclicBarrier 循環柵欄

CountDownLatch 倒計數只有一次,倒計數到0,則結束。有時候的需求是一批一批的倒計數 比如主線程沒十個子線程完成一次,則主線程繼續執行一次,下次又來了十個線程完成,則主線程 在執行一次。循環的倒計數,則需要用到循環柵欄Cycl

原创 CountDownLatch 倒數計數器

即當前線程,等待CountDownLatch中的各子線程任務都完成後,在繼續往下執行的任務 下述demo新建一個倒數計數器10。 每個線程計數器調用countDownLatch.countDown();倒計數一次。   主方法裏,使用線程

原创 semaphore 信號量

       首先鎖一般來說是互斥的,排他的,而信號量則指的是一種允許設定數量個線程進入 的一種共享鎖,但是有數量限制,當進入的個數達到上限則開始不允許其他的進入。   public void acquire()獲取許可 public v

原创 ReadWriteLock 讀寫鎖

對線程操作時讀或者寫做以區分,讀就不該加以限制,都能讀,寫才加以限制 這樣纔夠合理。這就是讀寫鎖的意義。   讀讀: 不阻塞不互斥 讀寫:讀阻塞寫,寫也阻塞讀 寫寫:寫寫互斥。 獲取方法如下: ReentrantReadWrit

原创 Condition

Condition對於重入鎖的作用,相當於object.wait  object.notify 對於synchronized 的作用。也是判斷對一個鎖是否可操作的條件。 常用接口: void await() throws Interru

原创 ReentrantLock 重入鎖

ReentrantLock 爲synchronized替代品,JDK1.5之前,jvm沒對synchronized過多優化時 ReentrantLock 性能遠遠大於synchronized。 可重入:一個線程對自己來說,是可以重複進入一

原创 Thread.interrupt()方法理解(轉)

在java中,線程的中斷(interrupt)只是改變了線程的中斷狀態,至於這個中斷狀態改變後帶來的結果,那是無法確定的,有時它更是讓停止中的線程繼續執行的唯一手段。不但不是讓線程停止運行,反而是繼續執行線程的手段。 對於執行一般邏輯的線

原创 同步,異步和阻塞,非阻塞的理解

個人理解        同步異步的區別在於:發起一個請求後是否等待這個請求相應後再去做別的事。        阻塞,非阻塞的區別在於:當使用共享資源時,發現該資源當前不可用,是等 着直到它可用,還是直接反饋:“這會兒還不行,等會兒你再去吧

原创 單元測試之 Mockito

        單元測試,顧名思義,指只測試自己這個工作單元,默認其他人的部分都是隊的情況 下自己這個單元是否能正確處理業務邏輯。         既然是單元測試,那麼肯定不需要實際去把依賴的地方起起來,這樣就不是單元測試了。 但是我們的

原创 ORACLE 使用sqluldr2和sqlldr進行導入導出

            當需要大數據量的導入導出的數據遷移操作時,效率變得極其重要oracle數據導出工具sqluldr2可以將數據以csv、txt等格式導出,適用於大批量數據的導出,導出速度非常快。導出後可以使用oracle loade

原创 物化視圖創建 及 刷新機制修改

Oracle物化視圖語法2010-05-21 09:58    物化視圖對於前臺數據庫使用者來說如同一個實際的表,具有和一般表相同的如select等操作,而其實際上是一個視圖,一個由系統實現定期刷新其數據的視圖(具體刷新時間在定義物化視圖