2013-03-10 5 views
0

Я тестирую Думайте Мульти нить в Java, как это в Android:нить Android демон тест

private void testDeamon(){ 

    Thread d = new Daemon(); 
    System.out.println(
      "d.isDaemon() = " + d.isDaemon()); 


    try { 
     Thread.sleep(2000); 
    } catch (InterruptedException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

} 


public class Daemon extends Thread { 
    private static final int SIZE = 10; 
    private static final String TAG = null; 
    private int i = 9000; 

    private Thread[] t = new Thread[SIZE]; 
    public Daemon() { 
     setDaemon(true); 
     start(); 
    } 
    public void run() { 
     for(int i = 0; i < SIZE; i++) 
      t[i] = new DaemonSpawn(i); 
     for(int i = 0; i < SIZE; i++) 
      System.out.println(
        "t[" + i + "].isDaemon() = " 
          + t[i].isDaemon()); 
     while(true) { 
      Log.d(TAG, "Deamon running..."+ i--); 
      if (i==0) 
       break; 

      yield(); 
     } 
    } 

    class DaemonSpawn extends Thread { 
     public DaemonSpawn(int i) { 
      System.out.println(
        "DaemonSpawn " + i + " started"); 
      start(); 
     } 
     public void run() { 
      while(true) 
       yield(); 
     } 
    } 
} 
  1. Почему результат отродье демона является ложным, так что порождение демона не демон здесь

  2. Почему Daemon thead продолжает работать после выхода Android-приложения? Согласно TIJ, выход JVM после того, как все неисчерпаемые нити убиты, и выход нити deamon тоже. Итак, JVM не отключается после уничтожения приложения? Благодарю.

+0

Я думаю, вам, возможно, придется использовать 'setDaemon (true);', чтобы сделать их демонами, так что isDaemon() вернет true вместо false. – FoamyGuy

ответ

1

Я не могу ответить на первый вопрос. Они также должны быть демонами (http://www.linuxtopia.org/online_books/programming_books/thinking_in_java/TIJ315_005.htm)
В целях Android темы демона или потоки не-демона являются спорными. Процесс вашего приложения никогда не выходит: он либо остается в фоновом режиме, либо в какой-то момент его убивают.

Ваш второй вопрос: Что вы подразумеваете под «... выходом Android-приложения ...»? Приложения не «выходят», они просто уходят в прошлое и, если ОС сочтет это необходимым, они могут быть убиты.

Другими словами, когда ваше приложение переходит в фоновый режим, оно не выходит. Он продолжает работать в фоновом режиме (пока он не будет убит в какой-то момент).

+0

«Выход Android-приложения» означает, что я выхожу из приложения, и основная активность будет уничтожена. – herbertD

+0

Спасибо! Итак, есть ли в каждом приложении JVM? – herbertD

+0

Это зависит, но, вообще: да. –

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