多執行緒 五 JUC常用工具

2021-09-28 22:33:57 字數 1901 閱讀 5766

public class conditionwait implements runnable

@override

public void run() catch (interruptedexception e) finally }}

public class conditionsignal implements runnable

@override

public void run() finally }}

public class conditiondemo 

}

condition底層的底層實現是維護了乙個等待佇列,當呼叫condition.await的時候假如到condition佇列,阻塞當前執行緒。當另外的執行緒呼叫signal或者signalall方法,把等待佇列的節點追加到同步佇列中,重新搶奪cpu資源。

system.out.println("主線程繼續執行任務啦");

定義乙個計數器state,通過countdownlatch的構造方法傳入,呼叫countdownlatch.await方法時會阻塞執行緒。其他執行緒每執行一次countdownlatch.countdown方法,state會減一,當state等於0的時候,原阻塞執行緒會被喚醒

這個例子演示了車倆進入停車場的時候,停車場的車位是有限的,我們預設乙個數量,當數量達到的時候,後面進來的車倆必須等待其他車倆釋放車位。

semaphore用於限流,semaphore定義了乙個令牌數permits,當每乙個呼叫semaphore.acquire()的時候permits都會減1,當permits數量=0的時候,呼叫執行緒會阻塞,等待其他執行緒release。

public class datainputthread extends thread

@override

public void run() catch (interruptedexception e) catch (brokenbarrierexception e) }}

public class datacleanthread extends thread 

}

public class cyclicbarrierdemo 

timeunit.seconds.sleep(3);}}

上面的例子演示了資料清理執行緒等待子執行緒匯入完資料之後才開始執行程式。

cyclicbarrier跟countdownlatch用法差不多,但是cyclicbarrier可以重複使用,每一次配套的子執行緒和等待執行緒執行完之後,又會重置計數器重複試用。

Linux常用工具(五)

五 shell使用基礎 shell是命令解析器,將使用者輸入的指令轉化為機器可以執行的程式。1.shell下for語句 建立四個資料夾,同時在資料夾內建立同名檔案,在檔案中寫入hello world 定義shell指令碼的變數時在變數名和等號之間不允許有空格。注 echo hello a 覆蓋a的內...

SEO常用工具

seo常用工具 搜尋引擎抓取內容模擬器 可以模擬蜘蛛抓取指定網頁,包括text link keywords及description資訊等。頁面相似度檢測工具 檢驗兩個頁面的相似度 如果相似度達80 以上,將可能受到懲罰 sitemap 製作工具 中文 http www.xinqj.com sitem...

SQL 常用工具

在測試我們的系統時,需要向資料庫一次性插入128條記錄,而我們的配置工具的匯入匯出居然不支援 想想,也情有可原,需求就是這樣。手工輸入128條又太麻煩了,因此,我想到了bcp,之前在給同事導資料時也用過這個命令,但是當時看完幫助文件 導完資料後沒有做相應的記錄,又從頭看了遍文件,因此,決定把他記錄下...