当我浏览andorid.os.HandlerThread
类的源代码时,我发现Process.myTid()
被用作线程ID。
我搜索了一下,发现this有用的答案,现在我明白了什么是myTid
以及myTid
和Thread.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
答案 0 :(得分:0)
所有Thread
只在一个Process
中运行(您的应用程序可能有多个进程)。每个线程都在默认池中运行。这意味着如果您创建自定义ThreadPool
,您的线程ID可能相同,但它们属于不同的池,但因为每个线程都在Process
内运行,所以每个线程都有自己唯一的ID。
Thread.getId()只是java静态自动递增,(这个线程ID可以重用)。
Process.getTid() retunrs Os.gettid()
。