我測試想在Android中Java的多線程是這樣的:的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();
}
}
}
爲什麼產卵守護程序的結果是假的,所以一個守護進程的菌種是不是在這裏守護進程
爲什麼守護進程在Android應用程序退出後繼續運行?根據TIJ的說法,在所有非deamon線程被殺死並且deamon線程退出後,JVM退出。所以應用程序銷燬後JVM不會關閉?謝謝。
我想你可能不得不使用'setDaemon(true);'使它們成爲守護進程,這樣isDaemon()將返回true而不是false。 – FoamyGuy 2013-03-10 15:31:22