Задержка между двумя потоками в Java - PullRequest
0 голосов
/ 06 января 2012

У меня следующая ситуация:

new Thread() {
    public void run() {
        method(object1);
    }
}.start();

// some code ... 

new Thread() {
    public void run() { 
        method(object2);
    }
}.start();

Используется метод рисования карты.В общем, сначала мне нужно нарисовать карту с object1, а затем через некоторое время, например, через 5 секунд, другую карту, используя object2.

Я пытался поместить Thread.sleep(5000) между двумя Thread с, также после и так далее ... Но я не мог заставить это работать.Любые предложения?

В этом случае объект 2 отображается, а объект 1 нет!
Если я прокомментирую второй поток, первый объект будет нарисован.Также, если я прокомментирую первый поток, второй объект рисуется.
Мне нужно представить объект1 на 10 секунд, а затем представить объект2.

Ответы [ 2 ]

4 голосов
/ 06 января 2012

Попробуйте сделать это проще:

method(object1);
Thread.sleep(5000);
method(object2);

Нет необходимости запускать потоки, если вам нужно подождать 5 секунд.

В качестве альтернативы вы можете использовать java.util.Timer - но покапохоже, ваша проблема не в задержке.

2 голосов
/ 06 января 2012

Если вам нужно нарисовать карту с object2 после object1, вы должны сделать

new Thread() {
    public void run() {
        method(object1);
        method(object2);
    }
}.start();

Я не уверен, сколько времени занимает запуск вашего метода (object1), но если это занимает более 5 секунд ипоток возвращается после сна, метод (object2) запускается, и вполне возможно, что метод (object2) будет выполнен первым, если это займет меньше времени, чем метод (object1).

...