Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何仅在我的应用程序中获取正在运行的线程_Java_Android_Multithreading - Fatal编程技术网

Java 如何仅在我的应用程序中获取正在运行的线程

Java 如何仅在我的应用程序中获取正在运行的线程,java,android,multithreading,Java,Android,Multithreading,我正在尝试获取应用程序中所有活动/正在运行的线程。我写了下面发布的代码,得到了下面发布的结果。 实际上,发布的输出中没有一个线程属于我的应用程序,除了 07-10 15:36:48.621 19333-19624/eu.men.m2sapp D/GcmIntentService: thread.toString():Thread[IntentService[GcmIntentService],5,main] 1) 数字5表示什么 2) “getAllStackTraces”似乎检索了系统范围内

我正在尝试获取应用程序中所有活动/正在运行的线程。我写了下面发布的代码,得到了下面发布的结果。 实际上,发布的输出中没有一个线程属于我的应用程序,除了

07-10 15:36:48.621 19333-19624/eu.men.m2sapp D/GcmIntentService: thread.toString():Thread[IntentService[GcmIntentService],5,main]
1) 数字5表示什么

2) “getAllStackTraces”似乎检索了系统范围内的所有活动线程,但如何获取仅在我的应用程序中运行的线程

代码

Set<Thread> threadSet = Thread.getAllStackTraces().keySet();
Thread[] threadArray = threadSet.toArray(new Thread[threadSet.size()]);
Thread thread = null;
for (int i = 0; i < threadArray.length; i++) {
    thread = threadArray[i];
    Log.d(TAG, "thread.toString():" + thread.toString());
}
07-10 15:36:48.621 19333-19624/eu.men.m2sapp D/GcmIntentService: thread.toString():Thread[IntentService[GcmIntentService],5,main]
07-10 15:36:48.622 19333-19624/eu.men.m2sapp D/GcmIntentService: thread.toString():Thread[FinalizerWatchdogDaemon,5,system]
07-10 15:36:48.622 19333-19624/eu.men.m2sapp D/GcmIntentService: thread.toString():Thread[Timer-0,5,main]
07-10 15:36:48.622 19333-19624/eu.men.m2sapp D/GcmIntentService: thread.toString():Thread[RenderThread,5,main]
07-10 15:36:48.622 19333-19624/eu.men.m2sapp D/GcmIntentService: thread.toString():Thread[ReferenceQueueDaemon,5,system]
07-10 15:36:48.622 19333-19624/eu.men.m2sapp D/GcmIntentService: thread.toString():Thread[FinalizerDaemon,5,system]
07-10 15:36:48.622 19333-19624/eu.men.m2sapp D/GcmIntentService: thread.toString():Thread[Binder_3,5,main]
07-10 15:36:48.622 19333-19624/eu.men.m2sapp D/GcmIntentService: thread.toString():Thread[main,5,main]
07-10 15:36:48.622 19333-19624/eu.men.m2sapp D/GcmIntentService: thread.toString():Thread[Signal Catcher,5,system]
07-10 15:36:48.622 19333-19624/eu.men.m2sapp D/GcmIntentService: thread.toString():Thread[Binder_1,5,main]
07-10 15:36:48.622 19333-19624/eu.men.m2sapp D/GcmIntentService: thread.toString():Thread[Binder_2,5,main]
07-10 15:36:48.622 19333-19624/eu.men.m2sapp D/GcmIntentService: thread.toString():Thread[GCDaemon,5,system]
07-10 15:36:48.622 19333-19624/eu.men.m2sapp D/GcmIntentService: thread.toString():Thread[pool-1-thread-1,5,main]
07-10 15:36:48.622 19333-19624/eu.men.m2sapp D/GcmIntentService: thread.toString():Thread[JDWP,5,system]
07-10 15:36:48.623 19333-19624/eu.men.m2sapp D/GcmIntentService: thread.toString():Thread[HeapTrimmerDaemon,5,system]
07-10 15:36:48.623 19333-19624/eu.men.m2sapp D/GcmIntentService: thread.toString():Thread[Thread-52709,5,main]
实际上,发布的输出中没有一个线程属于我的应用程序

所有这些线程都属于应用程序的进程。大多数来自框架,而不是您的代码

“getAllStackTraces”似乎检索系统范围内的所有活动线程

否,它检索进程中的线程

如何获取仅在我的应用程序中运行的线程

你已经是了

数字5表示什么


我相信这是线程的优先级。

plus1。您能告诉我如何获取仅从我的代码启动的线程吗?@user2121:启动时跟踪它们。据我所见,框架启动了所有线程,除非您决定创建自己的名为
IntentService
的类。请告诉我您是如何知道我是从IntentService启动线程的?好的,我们事先知道IntentService是安卓类,但除了IntentService之外,人们应该如何知道线程是否从特定类开始?可能是因为类名后面有“[]”方括号?@user2121:“你能告诉我你是怎么知道我的线程是从IntentService开始的吗?”--
thread[IntentService[gcminentService],5,main]
表明涉及到
IntentService
。我认为这来自于
setName()
,或者
Thread
构造函数,它使用
String
参数。好吧,那么根据您所说的,'Thread[Timer-0,5,main]'哪个类启动了'Timer-0',因为我认为'Timer-0'不是类名?!