Exchanger 簡介
Exchanger的功能可以使2個線程之間傳輸數據,所以也稱為交換器或交換者,是一個用於線程見協作的工具類。它提供一個同步點,在這個同步點兩個線程可以交換彼此的數據。這兩個線程通過exchange()方法交換數據,所以主要的學習點就是exchange()方法。
方法exchange()阻塞的特性
類Exchanger中的exchange()方法具有阻塞的特性,也就是此方法被調用後等待其他線程來交換數據,如果沒有其他線程交換數據,則一直阻塞等待。
執行結果:
從運行結果來看,main線程已經執行結束,由於沒有一個線程和線程A交換數據,所以線程A一直處於阻塞狀態。
方法exchange()傳遞數據
執行結果:
方法exchange(V x, long timeout,TimeUnit unit)與超時
當調用exchange(V x,long timeout,TimeUnit unit)方法後在指定的時間內沒有其他線程交換數據,則出現超時異常。
執行結果:
閱讀更多 程序員那點事兒 的文章