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'不是类名?!