Exchanger 的使用

Exchanger 的使用

關注

Exchanger 簡介

Exchanger的功能可以使2個線程之間傳輸數據,所以也稱為交換器或交換者,是一個用於線程見協作的工具類。它提供一個同步點,在這個同步點兩個線程可以交換彼此的數據。這兩個線程通過exchange()方法交換數據,所以主要的學習點就是exchange()方法。

方法exchange()阻塞的特性

類Exchanger中的exchange()方法具有阻塞的特性,也就是此方法被調用後等待其他線程來交換數據,如果沒有其他線程交換數據,則一直阻塞等待。

Exchanger 的使用

圖1

執行結果:

Exchanger 的使用

圖2

從運行結果來看,main線程已經執行結束,由於沒有一個線程和線程A交換數據,所以線程A一直處於阻塞狀態。

方法exchange()傳遞數據

Exchanger 的使用

圖3

執行結果:

Exchanger 的使用

圖3

方法exchange(V x, long timeout,TimeUnit unit)與超時

當調用exchange(V x,long timeout,TimeUnit unit)方法後在指定的時間內沒有其他線程交換數據,則出現超時異常。

Exchanger 的使用

圖5

執行結果:

Exchanger 的使用

圖6

Exchanger 的使用

結束關注


分享到:


相關文章: