2011-01-26 3 views
1

Почему главная нить не выполняется? Я думал, что я использую Thread.sleep(int value). Я даю возможность запускать другие темы, но этого никогда не произойдет.Один поток всегда работает без возможности для других потоков

public static void main(String[] args) { 
     final Sook o = new Sook(); 
     Thread t = new Thread(new Runnable() { 
      public void run() { 
       while (true) { 
        try { 
         Thread.sleep(10000); // Specially set to give a chance to the main thread to run 
        } catch (InterruptedException e) { 
         e.printStackTrace(); 
        } 
       } 
      } 
     }); 

     t.run(); 

     System.out.println("<<<<<BACK TO MAIN >>>>>>"); // Never happens 
    } 

ответ

12

Не называйте, t.run(), вызовите t.start()

Просто запустите будет вызывать метод запуска в настоящее время Thread.

+1

Кроме того, вы не должны проглатывать 'InterruptedException'. В блоке catch должен быть 'return;'. – biziclop

+0

О, Боже мой! Какая ошибка! Большое спасибо. – Eugene

+1

@AndroidNoob, также вам не нужно спать или делать что-то конкретное, чтобы дать время другим темам. ОС и JVM будут обрабатывать его для вас. Если вам нужно более точное управление тем, сколько времени потребляет каждая нить, используйте приоритеты. Существует также метод 'yield()' специально для предоставления времени другим потокам, но вам, вероятно, он тоже не понадобится. –

Смежные вопросы