В этой статье в основном изучается использование обменника инструмента синхронизации программирования Java программирования. Давайте посмотрим на конкретный контент ниже.
Если два потока необходимо обмениваться информацией друг от друга во время их работы, например, используемые данные или пространство, им необходимо использовать класс Exchange. Обменник предоставляет очень удобный способ обмена информацией. Он может служить точкой синхронизации для двух потоков для обмена объектами. Только когда каждый поток входит в метод exchange () и дает объект, может ли он принять объект, заданный, когда другие потоки возвращаются.
Только два потока могут обмениваться данными одновременно. Если есть несколько потоков, только два могут обмениваться данными. Давайте посмотрим на общий пример: рука об руку и доставить товар с одной песней!
public class ExchangerTest {public static void main(String[] args) {ExecutorService service = Executors.newCachedThreadPool();final Exchanger exchanger = new Exchanger();//Define an exchange object to exchange data//Open a thread to execute tasks service.execute(new Runnable(){@Override public void run() {try {String data1 = «Героин»; System.out.println («Thread» + Thread.currentThread (). GetName () + «Препараты выпускаются»); Thread.sleep ((Long) (Math.Random ()*10000)); // Передача данных, чтобы обменяться в метод обмена, и затем блокируют, ожидая другой потоки, чтобы обмениваться им. (String) Exchanger.Exchange (data1); System.out.println ("thread" + thread.currentThread (). GetName () + "Shap Heroin for Exchange" + Data2);} Catch (Exception e) {} наконец {service.shutdown (); System.out.println («Транзакция завершается, запускается с помощью денег! Service Service.execute (new Runnable () {@переопределить public void run () {try {string data1 = "3 миллиона"; system.out.println ("поток" + thread.currentThread (). getName () + "Take" + Data1 + "Выберите его"); (String) Exchanger.Exchange (data1); System.out.println ("thread" + thread.currentThread (). GetName () + "получение с 3 миллионами" + data2);} catch (Exception e) {} наконец {service.shutdow Героин! ");}}});}});}});}});}});}}Из кодекса я, казалось, видел, как два человека торгуют наркотиками ... давайте посмотрим, как результаты транзакции:
Thread Pool-1-Thread-1 вынимает наркотики героин. Thread Pool-1-Thread-2 снимает 3 миллиона. Thread Pool-1-Thread-2 получает бассейн Heroin Thread-1-Thread-1 для обмена героином на 3 миллиона. Транзакция завершена. Возьмите героин и быстро беги!
После того, как транзакция закончилась, убегайте с деньгами!
Он работает быстро. Судя по исходным результатам, он реализует обмен данными. Это просто обмен основным типом данных. Его реальное использование не ограничивается этим. Например, мы можем обменять объект, который полезен. JDK официально упомянул заявление высокого уровня:
Используйте обмену для обмена буферами между потоками, поэтому при необходимости потока, заполняющая буфер, получает недавно вакантный буфер и передает заполненный буфер в резьбу, этот вакантный буфер.
Это должно основываться на реальной ситуации. Идея такая же, как и выше. В действительности вы должны определить класс буфера, а затем класс этого буфера обменивается между двумя потоками. Что касается его реализации в классе, это зависит от реальной ситуации. Это все для использования обменника ~
Выше приведено все содержание этой статьи об анализе экземпляра использования экземпляра Java программирования программирования, я надеюсь, что он будет полезен для всех. Заинтересованные друзья могут продолжать ссылаться на другие связанные темы на этом сайте. Если есть какие -либо недостатки, пожалуйста, оставьте сообщение, чтобы указать это. Спасибо, друзья, за вашу поддержку на этом сайте!