Android:如何确定我的方法在哪些线程上运行?

时间:2011-09-02 02:18:04

标签: android multithreading

我想确保我的方法在我应该运行的线程上运行。为此,想在我的日志中添加线程的名称或ID。为了检查我的方法是否在UIthread,thread1,thread2 .... threadx。

中运行

问题:

  1. 指导我需要设置线程的名称或ID。我不确定这一点,如果您有更好的方法,请与我们分享如何区分UI线程与其他正在运行的线程。
  2. 指导我如何记录上述名称或ID。我已经有了日志系统。只想知道需要调用的方法来获取名称或id。也许,thread.name()或thread.id()。
  3. 感谢任何指导。

1 个答案:

答案 0 :(得分:0)

使用ThreadLocal。实际上,文档中的示例正是您所需要的:

 import java.util.concurrent.atomic.AtomicInteger;

 public class UniqueThreadIdGenerator {

     private static final AtomicInteger uniqueId = new AtomicInteger(0);

     private static final ThreadLocal < Integer > uniqueNum = 
         new ThreadLocal < Integer > () {
             @Override protected Integer initialValue() {
                 return uniqueId.getAndIncrement();
         }
     };

     public static int getCurrentThreadId() {
         return uniqueId.get();
     }
 } // UniqueThreadIdGenerator

如果需要,可以将所需名称传递给Thread,并在ThreadLocal方法的第一行中将其设置为静态run()变量。