Android,获取当前线程ID的两种方式有什么区别?

时间:2015-02-12 05:53:43

标签: java android

当我记录下面两个线程ID时,它们是不同的。

long threadId = Thread.currentThread().getId();
long threadId2 = android.os.Process.myTid();

但是从Android文档来看,它们完全相同:

/**
* Returns the Thread of the caller, that is, the current Thread.
*/
public static native Thread currentThread();

所以我假设第一行将返回调用者线程的id。

然后这个

/**
     * Returns the identifier of the calling thread, which be used with
     * {@link #setThreadPriority(int, int)}.
     */
    public static final int myTid() {
        return Os.gettid();
    }

从评论中看,它看起来也是来电者线程的ID(虽然他们使用“' call'”这个词。)

他们应该是一样的,或者我错过了什么?感谢。

2 个答案:

答案 0 :(得分:0)

ThreadId和Tid是不同的。

ThreadId更像是pid,而Tid则有点复杂。

[更正:] ThreadId pid,它实际上是++Thread.count

的值

详情请见: Difference between pid and tid 和这里: The difference between Thread.currentThread().getId() and Process.myTid() in Android

答案 1 :(得分:0)

Thread.currentThread()。getId():返回调用者线程的标识符,即当前的Thread。         android.os.Process.myTid():返回调用线程的标识符,与setThreadPriority(int,int)一起使用。         这里         根据Linux优先级设置线程的优先级。

参数         tid要更改的线程/进程的标识符。         priority一个Linux优先级,从最高调度优先级的-20到最低调度优先级的19。

供进一步参考

http://developer.android.com/reference/android/os/Process.html#myTid()