HandlerThread的线程ID - android

时间:2017-02-20 18:37:42

标签: java android linux multithreading

当我浏览andorid.os.HandlerThread类的源代码时,我发现Process.myTid()被用作线程ID。

我搜索了一下,发现this有用的答案,现在我明白了什么是myTid以及myTidThread.getId()之间的difference是什么? Process.myTid()

这是我的问题;

  

为什么我们需要从Thread.getId()获取ID?为什么使用@Override public void run() { mTid = Process.myTid(); Looper.prepare(); synchronized (this) { mLooper = Looper.myLooper(); notifyAll(); } Process.setThreadPriority(mPriority); onLooperPrepared(); Looper.loop(); mTid = -1; }

request is not defined

1 个答案:

答案 0 :(得分:0)

所有Thread只在一个Process中运行(您的应用程序可能有多个进程)。每个线程都在默认池中运行。这意味着如果您创建自定义ThreadPool,您的线程ID可能相同,但它们属于不同的池,但因为每个线程都在Process内运行,所以每个线程都有自己唯一的ID。

对于每个线程,

Thread.getId()只是java静态自动递增,(这个线程ID可以重用)。

Process.getTid() retunrs Os.gettid()