Java / Java Multithreading
Explain Exchanger in Java thread.
Exchanger is a synchronization point at which threads can pair and swap elements between the pair. Each thread presents some object on entry to the exchange method, matches with a partner thread, and receives its partner's object on return.
An Exchanger may be viewed as a bidirectional form of a SynchronousQueue. Exchangers may be useful in applications such as genetic algorithms and pipeline designs.
package main.java.tags; import java.util.concurrent.*; import java.util.*; public class ExchangerExample { public static void main(String[] args) { Exchanger<Integer> exchanger = new Exchanger<Integer>(); Thread t1 = new MyThread(exchanger, new Integer(5)); Thread t2 = new MyThread(exchanger, new Integer(10)); t1.start(); t2.start(); } } class MyThread extends Thread { Exchanger<Integer> exchanger; Integer numberToExchange; MyThread(Exchanger<Integer> exchanger, Integer message) { this.exchanger = exchanger; this.numberToExchange = message; } public void run() { try { System.out.println(this.getName() + " has value: " + numberToExchange); // exchange messages numberToExchange = exchanger.exchange(numberToExchange); System.out.println("After exchange " + this.getName() + " has value: " + numberToExchange); } catch (Exception e) { } } }
The above example exchanges Integer objects between a pair of threads. The below is the output.
Thread-0 has value: 5 Thread-1 has value: 10 After exchange Thread-0 has value: 10 After exchange Thread-1 has value: 5
More Related questions...