首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用DDMS调试ScheduledThreadPoolExecutor

使用DDMS调试ScheduledThreadPoolExecutor
EN

Stack Overflow用户
提问于 2012-07-04 05:40:56
回答 1查看 488关注 0票数 0

对于我的安卓应用程序,我使用ScheduledThreadPoolExecutor而不是Timer,因为它不受时间变化的影响。

使用计时器,您可以通过为其指定名称来创建它。例如:定时器myTimer =新定时器(“TimerA”);

这非常方便,因为当在Thread视图中使用DDMS进行调试时,我可以确切地看到哪些线程正在运行……然后用这个名字追溯到我的代码。

但是,使用ScheduledThreadPoolExecutor时,我似乎不能给它命名。因此,当在DDMS中使用thread视图进行调试时,我看到类似这样的内容:"pool-4-thread-1“,这是没有意义的,并且我无法使用这样的名称回溯到我的代码。

有人能帮我吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-04 06:19:27

标准Java API不支持命名ThreadPoolExecutor,但是通过ThreadFactory支持命名由ThreadPoolExecutor创建的线程,请查看here

创建新线程

使用ThreadFactory创建新线程。如果没有另外指定,则使用defaultThreadFactory(),它创建的所有线程都处于相同的ThreadGroup中,并且具有相同的NORM_PRIORITY优先级和非守护进程状态。通过提供不同的ThreadFactory,您可以更改线程的名称、线程组、优先级、守护进程状态等。如果ThreadFactory在从newThread返回null时被要求创建线程失败,则执行器将继续,但可能无法执行任何任务。

示例代码:

代码语言:javascript
复制
ScheduledThreadPoolExecutor scheduledThreadPoolExecutor = Executors.newScheduledThreadPool(5, new ThreadFactory() {
  final AtomicInteger threadNumber = new AtomicInteger(1);
    
  @Override
  public Thread newThread(Runnable r) {
    return new Thread(r, "Foo-" + threadNumber.getAndIncrement());
  }
});

希望这能有所帮助。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11319604

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档