Написание программы с двумя потоками, которая печатает поочередно - PullRequest
8 голосов
/ 22 февраля 2012

Мне недавно задали этот вопрос в интервью.

Напишите программу с двумя потоками (A и B), где A печатает 1, B печатает 2 и так далее, пока не будет достигнуто 50.

Как нам это сделать?

Ответы [ 11 ]

0 голосов
/ 22 февраля 2012

Это еще одно решение:

     Thread t1 = new Thread(new Runnable() {

        @Override
        public void run() {
            synchronized (lock) {
                for (int i = 1; i <= 50; i += 2) {
                    System.out.println("T1=" + i);

                    t1turn = false;
                        try {
                            lock.notifyAll();
                            lock.wait();
                        } catch (InterruptedException e) {
                        }
                }
            }

        }
    });
    Thread t2 = new Thread(new Runnable() {

        @Override
        public void run() {
            synchronized (lock) {
                for (int i = 2; i <= 50; i += 2) {
                    if (t1turn)
                        try {
                            lock.wait();
                        } catch (InterruptedException e) {
                        }
                    System.out.println("T2=" + i);
                    t1turn = true;
                    lock.notify();
                }
            }
        }
    });
    t1.start();
    t2.start();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...