当我记录下面两个线程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'”这个词。)
他们应该是一样的,或者我错过了什么?感谢。
答案 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()