1. 程式人生 > 實用技巧 >java通過sftp形式連線主機下載檔案(附專案與主機編碼不一致解決方法)

java通過sftp形式連線主機下載檔案(附專案與主機編碼不一致解決方法)

CyclicBarrier基本功能

  CyclicBarrier 允許一組執行緒,全部等待彼此都到達共同的屏障點,然後同時執行下一項操作。在某一個執行緒未到達之前,這些執行緒必須彼此等待。等待數量滿足parties 值以後,執行CyclicBarrier 構造時設定的方法。也可以不傳後續方法,那麼等待數量滿足後,不執行預定義的操作。

常用方法

  CyclicBarrier(intparties, RunnablebarrierAction) 構造方法。建立一個新的 CyclicBarrier ,當給定數量的執行緒(執行緒)等待時,它將跳閘,當屏障跳閘時執行給定的屏障動作,由最後一個進入屏障的執行緒執行。

  await()方法。 如果當前執行緒不是最後一個執行緒,那麼它將進入休眠狀態,知道執行await方法的執行緒到達parties 的數量,或者當前執行緒被打斷。如果當前執行緒是要到達的最後一個執行緒,並且在建構函式中提供非空障礙操作,則當前執行緒在允許其他執行緒繼續之前執行該動作。

  await(longtimeout, TimeUnitunit)方法同上,設定一個超時時間,超過時間後,結束等待。丟擲TimeoutException

程式碼示例

 1     public static void main(String[] args) {
 2         CyclicBarrier barrier = new
CyclicBarrier(20,()->{System.out.println("滿人發車");}); 3 // CyclicBarrier barrier = new CyclicBarrier(20, new Runnable() { 4 // 5 // @Override 6 // public void run() { 7 // System.out.println("滿人發車"); 8 // 9 // } 10 // });
11 12 13 for (int i = 0; i < 101; i++) { 14 new Thread(()->{ 15 try { 16 // barrier.await(1,TimeUnit.SECONDS); 17 barrier.await(); 18 } catch (Exception e) { 19 e.printStackTrace(); 20 } 21 }).start(); 22 } 23 } 24 25