Junior — Middle
65
Можете объяснить, что подразумевается под термином Exchanger в контексте программирования и обмена данными?
Answer from AI
sobes.tech AI
В программировании термин "Exchanger" часто относится к механизму или объекту, который позволяет двум потокам или компонентам обмениваться данными напрямую.
В частности, в Java существует класс java.util.concurrent.Exchanger, который служит для синхронизации двух потоков, позволяя им обменяться объектами. Каждый поток вызывает метод exchange(), передавая объект, и ждет, пока другой поток тоже вызовет этот метод. После этого объекты меняются между потоками.
Пример использования Exchanger в Java:
import java.util.concurrent.Exchanger;
public class ExchangerExample {
public static void main(String[] args) {
Exchanger<String> exchanger = new Exchanger<>();
Thread thread1 = new Thread(() -> {
try {
String data = "Данные от потока 1";
String received = exchanger.exchange(data);
System.out.println("Поток 1 получил: " + received);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
});
Thread thread2 = new Thread(() -> {
try {
String data = "Данные от потока 2";
String received = exchanger.exchange(data);
System.out.println("Поток 2 получил: " + received);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
});
thread1.start();
thread2.start();
}
}
Таким образом, Exchanger — это удобный инструмент для обмена данными между двумя потоками в многопоточном приложении.