gpt4 book ai didi

Android守护线程测试

转载 作者:行者123 更新时间:2023-11-29 18:02:16 26 4
gpt4 key购买 nike

我正在像这样在 Android 中测试 Think in Java 的多线程:

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. 为什么spawn daemon的结果是false,所以一个daemon的spawn在这里不是daemon

  2. 为什么Android应用程序退出后守护进程thead还在运行?根据 TIJ,JVM 在所有非守护线程被杀死后退出,守护线程也退出。那么 JVM 在应用程序销毁后不会关闭?谢谢。

最佳答案

第一个问题我无法回答。它们也应该是守护进程 ( http://www.linuxtopia.org/online_books/programming_books/thinking_in_java/TIJ315_005.htm )
出于 Android 的目的,守护线程或非守护线程没有实际意义。您的应用程序的进程永远不会退出:它要么留在后台,要么在某个时候被杀死。

你的第二个问题:“... Android 应用程序退出...”是什么意思?应用程序不会“退出”,它们只是进入后台,如果操作系统认为有必要,它们可能会被杀死。

换句话说,当您的应用程序进入后台时,它不会退出。它一直在后台运行(直到它在某个时候被杀死)。

关于Android守护线程测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15323851/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com