Главная

Java

Многопоточность

Synchronizers


пример Exchenger:


public class ExchengerExample {

    public static void main(String[] args) {
        Exchanger<String>exchanger = new Exchanger<>();

        new Mike(exchanger);
        new Form(exchanger);

    }

    static class Mike extends Thread {
        private final Exchanger<String> exchanger;

        Mike(Exchanger<String> exchanger) {
            this.exchanger = exchanger;
            start();
        }

        @Override
        public void run() {

            try {
                exchanger.exchange("Привет ! меня зовут Майк!");
                sleep(3000);
                exchanger.exchange("Мне 20 лет !");
            } catch (InterruptedException e) {
                e.printStackTrace();
            }

        }
    }

    static class Form extends Thread {
        private final Exchanger<String> exchanger;

        Form(Exchanger<String> exchanger) {
            this.exchanger = exchanger;
            start();
        }

        @Override
        public void run() {
            try {
                System.out.println(exchanger.exchange(null));
                System.out.println(exchanger.exchange(null));
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}


Полезные ссылки: