powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / wait/notify
45 сообщений из 45, показаны все 2 страниц
wait/notify
    #38621713
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пыытаюсь разобраться с wait/notify

написал простенькую программку.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
public class LeftRightWaitNotifyExample {
    final static String str = "1";

    public static void main(String[] args) throws InterruptedException {

        new LeftLegThread(str).start();
        Thread.sleep(100);
        new RightLegThread(str).start();
    }
}

class LeftLegThread extends Thread {
    String monitor;

    public LeftLegThread(String str) {
        monitor = str;
    }

    @Override
    public void run() {
        try {
            makeStep();
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    private void makeStep() throws InterruptedException {
        synchronized (monitor) {

            System.out.println("Left ");
            monitor.wait();
            monitor.notify();

        }
    }
}

class RightLegThread extends Thread {
    String monitor;

    public RightLegThread(String str) {
        monitor = str;
    }

    @Override
    public void run() {
        try {
            makeStep();
        } catch (InterruptedException e) {

        }
    }

    private void makeStep() throws InterruptedException {
        synchronized (monitor) {
            while (true) {
                System.out.println("Right ");
                monitor.notify();
                monitor.wait();
            }
        }
    }
}



вывод:
авторLeft
Right
Right

почему right дважды выводиится????

я ж только один раз нотифаю
...
Рейтинг: 0 / 0
wait/notify
    #38621726
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerпочему right дважды выводиится????

Первый раз при запуске. Второй раз по notify().
Больше логирование поставьте чтобы порядок видеть.

questionerя ж только один раз нотифаю
И что?
Рекомендую:
http://www.rsdn.ru/forum/java/2184779.flat
...
Рейтинг: 0 / 0
wait/notify
    #38621779
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
public class LeftRightWaitNotifyExample {
    final static String str = "1";

    public static void main(String[] args) throws InterruptedException {

        new LeftLegThread(str).start();
        Thread.sleep(100);
        new RightLegThread(str).start();
    }
}

class LeftLegThread extends Thread {
    String monitor;

    public LeftLegThread(String str) {
        monitor = str;
    }

    @Override
    public void run() {
        try {
            makeStep();
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    private void makeStep() throws InterruptedException {
        synchronized (monitor) {
            int i=0;
            while (i++ < 1) {
                System.out.println("Left ");
                 monitor.wait();
                 System.out.println("after wait in left");
                 monitor.notify();
                 System.out.println("after notify in left");
            }

        }
    }
}

class RightLegThread extends Thread {
    String monitor;

    public RightLegThread(String str) {
        monitor = str;
    }

    @Override
    public void run() {
        try {
            makeStep();
        } catch (InterruptedException e) {

        }
    }

    private void makeStep() throws InterruptedException {
        synchronized (monitor) {
            while (true) {
                System.out.println("Right ");
                monitor.notify();
                System.out.println("after notify in right");
                monitor.wait();
                System.out.println("after wait in right");
            }
        }
    }
}


авторLeft
Right
after notify in right
after wait in left
after notify in left
after wait in right
Right
after notify in right

1. левый поток захватывает секцию, выводит left выполняет wait, освобождает секцию для другого потока
2. правый поток захватывает секцию выводит right нотифаит левый поток выполняет wait, освобождает секцию для другого потока
3. левый поток захватывает секцию и делает нотифай, покидает секцию
4. правый поток будится после wait, выводит Right нотифаит, уходит в wait и всё виснет.


Что-то я запутался в разнице между wait и notify
...
Рейтинг: 0 / 0
wait/notify
    #38621783
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questioner,

notify запускает того, кто wait
...
Рейтинг: 0 / 0
wait/notify
    #38621787
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И в данном случае монитор не у каждого потока свой, а должен быть общий монитор, между потоками.
...
Рейтинг: 0 / 0
wait/notify
    #38621791
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanИ в данном случае монитор не у каждого потока свой, а должен быть общий монитор, между потоками.
Он общий. Просто код кривой из-за этого не очевидно.
...
Рейтинг: 0 / 0
wait/notify
    #38621795
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerЧто-то я запутался в разнице между wait и notify
Что конкретно не понятно? Запутался, но вопросов не имею?
...
Рейтинг: 0 / 0
wait/notify
    #38621811
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

Код: java
1.
2.
monitor.notify();
     monitor.wait();



я делаю notify и wait.

ожидающий поток разбудится только после исполнения строчки monitor.wait(); ?

когда я делаю wait, то этот поток останавливается на этой строчке, отпускает монитор секции и ждёт пока ему сделают нотифай?
...
Рейтинг: 0 / 0
wait/notify
    #38621830
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerожидающий поток разбудится только после исполнения строчки monitor.wait(); ?

Конечно. Ведь мониор захвачен текущим потоком и второй поток никак не может исполнять synchronized секцию, пока текущий поток не отпустит монитор.
notify() говорит спящему потоку проснуться. Тот "просыпается", но не может приступить к выполнению, так как монитор захвачен.
wait() освобождает монитор и проснувшийся поток может его захватить чтобы продолжить исполнение кода.

questionerкогда я делаю wait, то этот поток останавливается на этой строчке, отпускает монитор секции и ждёт пока ему сделают нотифай?
Да.
...
Рейтинг: 0 / 0
wait/notify
    #38621846
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

спасибо
...
Рейтинг: 0 / 0
wait/notify
    #38621875
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

а насчёт кривизны кода. тут естественно надо сначала нотифаить, а потом wait.

А как бы передавали монитор?

явно обращались бы LeftRightWaitNotifyExample.str ?
...
Рейтинг: 0 / 0
wait/notify
    #38621888
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
и ещё слышал что-то, что wait надо как-то в цикле вызывать потому, что какая-то бага в jvm....

или я что-то путаю?
...
Рейтинг: 0 / 0
wait/notify
    #38621905
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerи ещё слышал что-то, что wait надо как-то в цикле вызывать потому, что какая-то бага в jvm....
И notify тоже в цикле дергать, чтоб wait уж точно-точно сработал?

questionerили я что-то путаю?
Да.
...
Рейтинг: 0 / 0
wait/notify
    #38621921
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
wait/notify
    #38621930
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questioner, там совсем не JVM и её баги рассматриваются, а обычные ситуации, когда wait отработает.

авторThis method causes the current thread (call it T) to place itself in the wait set for this object and then to relinquish any and all synchronization claims on this object. Thread T becomes disabled for thread scheduling purposes and lies dormant until one of four things happens:

Some other thread invokes the notify method for this object and thread T happens to be arbitrarily chosen as the thread to be awakened.

Some other thread invokes the notifyAll method for this object.

Some other thread interrupts thread T.

The specified amount of real time has elapsed, more or less. If timeout is zero, however, then real time is not taken into consideration and the thread simply waits until notified.


И для последних двух случаев предлагают решение в виде цикла, который будет проверять внутренний флаг .
...
Рейтинг: 0 / 0
wait/notify
    #38621957
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wadman,

как в моем случае сделать этот флаг?
...
Рейтинг: 0 / 0
wait/notify
    #38621961
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
wait/notify
    #38622024
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questioner, солбщение почти пятилетней давности...
Флаг - булевская переменная, которую выставлять перед своими действиями, чтобы отличать их от перечисленных системных событий, указанных выше.
...
Рейтинг: 0 / 0
wait/notify
    #38622048
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wadman,

я не понимаю как в моем случае этот флаг поставить.

Помогите пожалуйста.
...
Рейтинг: 0 / 0
wait/notify
    #38622069
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerкак в моем случае сделать этот флаг?
Ну, например, хранить состояние какой ногой сейчас "шагать".
...
Рейтинг: 0 / 0
wait/notify
    #38622070
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanquestioner, солбщение почти пятилетней давности...
Флаг - булевская переменная, которую выставлять перед своими действиями, чтобы отличать их от перечисленных системных событий, указанных выше.
там кроме spurious wakeup остальные не актуальны для тестового примера. Но вот в реальной жизни, действительно, стоит обезопасить действие проверкой состояния. Нельзя неявно хранить состояние бизнес логики в состоянии потока.
...
Рейтинг: 0 / 0
wait/notify
    #38622074
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

то есть самый простой вариант создать какую-то третью сущность, доступ к которой будут иметь оба потока, засинхронизироваться по ней и менять ее состояние?
...
Рейтинг: 0 / 0
wait/notify
    #38622075
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerа насчёт кривизны кода. тут естественно надо сначала нотифаить, а потом wait.
А как бы передавали монитор?
явно обращались бы LeftRightWaitNotifyExample.str ?
Да, тут вагон и меленькая тележка вопросов к коду.
- Почему для одного монитора целых 3 поля?
- Почему левая и правая нога - разные классы. У низ разная структура? Или разное поведение?
- Почему одно поле final, а остальные - нет? На сколько это безопасно?
- Гарантирует ли Thread.sleep() ожидаемое поведение?
...
Рейтинг: 0 / 0
wait/notify
    #38622079
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczДа, тут вагон и меленькая тележка вопросов к коду.
- Почему для одного монитора целых 3 поля?
- Почему левая и правая нога - разные классы. У низ разная структура? Или разное поведение?
- Почему одно поле final, а остальные - нет? На сколько это безопасно?
- Гарантирует ли Thread.sleep() ожидаемое поведение?
И, ещё. вопрос - на сколько безопасно синхронизироваться на строковых константах и других публично доступных экземплярах?
...
Рейтинг: 0 / 0
wait/notify
    #38622081
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerто есть самый простой вариант создать какую-то третью сущность, доступ к которой будут иметь оба потока, засинхронизироваться по ней и менять ее состояние?

Код: java
1.
2.
private static final Object LOCK = new Object();
private boolean stepRight;
...
Рейтинг: 0 / 0
wait/notify
    #38622091
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

Blazkowiczна сколько безопасно синхронизироваться на строковых константах и других публично доступных экземплярах?

А что тут небезопасного?

Blazkowicz- Почему для одного монитора целых 3 поля?
не вижу трёх полей
автор- Почему левая и правая нога - разные классы. У низ разная структура? Или разное поведение?
сделал ради очевидности. разные классы, разные потоки.
Blazkowicz- Почему одно поле final, а остальные - нет? На сколько это безопасно?
какие остальные?
Blazkowicz- Гарантирует ли Thread.sleep() ожидаемое поведение?
нет, но я думаю если его убрать, то ничего не поменяется. Это я так...проверить, что ничего не поменяется
...
Рейтинг: 0 / 0
wait/notify
    #38622094
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowiczquestionerто есть самый простой вариант создать какую-то третью сущность, доступ к которой будут иметь оба потока, засинхронизироваться по ней и менять ее состояние?

Код: java
1.
2.
private static final Object LOCK = new Object();
private boolean stepRight;



и это написать в классе LeftRightWaitNotifyExample?
...
Рейтинг: 0 / 0
wait/notify
    #38622105
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerА что тут небезопасного?

Кто угодно внутри этой же JVM может захватить публичный монитор и ваши ноги останутся ни с чем.

questionerне вижу трёх полей

Код: java
1.
2.
3.
4.
5.
6.
public class LeftRightWaitNotifyExample {
    final static String str = "1";//1
class LeftLegThread extends Thread {
    String monitor;//2
class RightLegThread extends Thread {
    String monitor;//3



questionerсделал ради очевидности. разные классы, разные потоки.

Даешь по классу на каждый объект!

questionerкакие остальные?

String monitor;

questionerнет, но я думаю если его убрать, то ничего не поменяется. Это я так...проверить, что ничего не поменяется
Тем не менее, никаких гарантий что один из этих потоков запустится первым - нет, пока нет явного состояния.
...
Рейтинг: 0 / 0
wait/notify
    #38622106
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerи это написать в классе LeftRightWaitNotifyExample?
в классе Leg.
...
Рейтинг: 0 / 0
wait/notify
    #38622112
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz Кто угодно внутри этой же JVM может захватить публичный монитор и ваши ноги останутся ни с чем.
вообще да


авторДаешь по классу на каждый объект!
ну так же всё таки более обший случай будет



questionerнет, но я думаю если его убрать, то ничего не поменяется. Это я так...проверить, что ничего не поменяется
Тем не менее, никаких гарантий что один из этих потоков запустится первым - нет, пока нет явного состояния.[/quot]

А если есть состояние, то как это повлияет?
...
Рейтинг: 0 / 0
wait/notify
    #38622118
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
questioner,



BlazkowiczДаешь по классу на каждый объект!

ну а если у нас нога с головой синхронизуется?
...
Рейтинг: 0 / 0
wait/notify
    #38622120
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerА если есть состояние, то как это повлияет?
Метод проверит состояние. Если надо ходить его ногой, то будет ходить. Если надо ходить другой ногой, то уснет.
Без явного состояние первой может пойти любая нога в зависимости от погоды (железа, ОС, версий и т.п.)
...
Рейтинг: 0 / 0
wait/notify
    #38623225
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

Что скажете про такой код?

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
public class LeftRightWaitNotifyExample {
    private static SharedResource sharedResource = new SharedResource();

    public static void main(String[] args) throws InterruptedException {
        new RightLegThread(sharedResource).start();
        Thread.sleep(1000);
        new LeftLegThread(sharedResource).start();
    }
}

class LeftLegThread extends Thread {
    private SharedResource sharedResource;

    public LeftLegThread(SharedResource sharedResource2) {
        sharedResource = sharedResource2;
    }

    @Override
    public void run() {
        try {
            makeStep();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

    private void makeStep() throws InterruptedException {
        synchronized (sharedResource) {
            int i = 0;
            while (i++ < 10) {
                System.out.println("Left ");
                sharedResource.beforeLeftStep = false;
                sharedResource.notify();
                while (!sharedResource.beforeLeftStep) {
                    sharedResource.wait();
                }
            }
        }
    }
}

class RightLegThread extends Thread {
    private SharedResource sharedResource;

    public RightLegThread(SharedResource sharedResource2) {
        sharedResource = sharedResource2;
    }

    @Override
    public void run() {
        try {
            makeStep();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

    private void makeStep() throws InterruptedException {
        synchronized (sharedResource) {
            while (true) {
                if (!sharedResource.beforeLeftStep) {
                    System.out.println("Right ");
                    sharedResource.beforeLeftStep = true;
                }
                sharedResource.notify();
                while (sharedResource.beforeLeftStep) {
                    sharedResource.wait();
                }
            }
        }
    }
}

class SharedResource {
    boolean beforeLeftStep = true;
}


как филды спрятать я что-то не догадался, да.
...
Рейтинг: 0 / 0
wait/notify
    #38623229
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
P.S. предполагается, что надо с левой ноги начинать движение
...
Рейтинг: 0 / 0
wait/notify
    #38623244
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerЧто скажете про такой код?

Да, всё тоже самое. final - не знаем, volatile - не слышали, копипаста - рулит.
...
Рейтинг: 0 / 0
wait/notify
    #38623282
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questioner,

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
public class LeftRight {

    public static void main(String[] args) {
        new Leg(true).start();
        new Leg(false).start();
    }

    static class Leg extends Thread {
        private static final Object LOCK = new Object();
        private static volatile boolean state;

        private final boolean right;

        public Leg(boolean right) {
            this.right = right;
        }

        @Override
        public void run() {
            try {
                while (!Thread.interrupted()) step();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }

        private void step() throws InterruptedException {
            synchronized (LOCK) {
                System.out.println(right ? "Right" : "Left");
                LOCK.notifyAll();
                while (state != right) {
                    LOCK.wait();
                }
                state = !state;
            }
        }
    }
}



Для красоты вместо boolean можно было бы и Enum завести.
...
Рейтинг: 0 / 0
wait/notify
    #38623308
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

volatile слышали, но разве тут необходим он?

ведь мы меняем булевую переменную только в synchronized секции. Мне казалось, что переменные по выходу из нее синхронизуются со здравым смыслом.
...
Рейтинг: 0 / 0
wait/notify
    #38623315
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerМне казалось...
Assumption is the mother of all fuck ups.
...
Рейтинг: 0 / 0
wait/notify
    #38623320
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: java
1.
2.
3.
 while (state != right) {
       LOCK.wait();
 }



а почему логика такая? спим только если мы левая нога?
...
Рейтинг: 0 / 0
wait/notify
    #38623326
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerа почему логика такая? спим только если мы левая нога?
right это переменная а не константа.
...
Рейтинг: 0 / 0
wait/notify
    #38623359
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

Вы наверное в уме компилили, но
у меня такой вот вывод


авторRight
Left
Left
Right
Left
Right
Left
Right
Left
Right
Left
....
...
Рейтинг: 0 / 0
wait/notify
    #38623367
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да. Метод криво с наскока написал. Так лучше?

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
        
            synchronized (LOCK) {
                while (state != right) {
                    LOCK.wait();
                }
                System.out.println(right ? "Right" : "Left");
                state = !state;
                LOCK.notifyAll();
            }
...
Рейтинг: 0 / 0
wait/notify
    #38623433
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

да, так лучше.


а можете помочь смоделировать ситуацию, когда один поток поменял переменную в synchronized блоке, покинул этот блок , а другой поток начал читать эту перменную и прочитал старое значение?
...
Рейтинг: 0 / 0
wait/notify
    #38624397
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
questioner,

вот так можно смоделировать:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
public class VolatileTest {

    static /*volatile*/ boolean done = false;

    public static void main(String[] args) throws Exception {
        Runnable waiter = new Runnable() {
            public void run() {
                while (!done) ;
                System.out.println("Exited loop");
            }
        };
        new Thread(waiter).start();
        Thread.sleep(100); // wait for JIT compilation
        synchronized ("123") {
            done = true;
        }     
        System.out.println("done is true " );
    }
}
...
Рейтинг: 0 / 0
wait/notify
    #38625931
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
questioner,

и вот ещё...."вместо тысячи слов"
http://www.jguru.com/faq/view.jsp?EID=98786
...
Рейтинг: 0 / 0
45 сообщений из 45, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / wait/notify
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]