2016-09-23 54 views
0

Thread.currentThread()。getId()返回線程標識符,但線程ID是如何由編譯器決定的。還存在用於特定的線程的任何方式設置。因爲ID有像SETID沒有方法在多線程中getId方法如何決定任何線程的ID

+0

也許沒有'setId'是因爲我不相信程序員來設置它。你爲什麼想讓程序員設置它?但是,您可以設置名稱。 –

+0

爲什麼你需要設置線程ID?你想達到什麼目的?編譯器如何處理ThreadID?每次在運行時創建新的線程時,它都會增加。 – rkosegi

回答

2

在java中8線程ID被髮放順序上施工的螺紋(從Thread所採取)的:

private static synchronized long nextThreadID() { 
    return ++threadSeqNumber; 
} 

作爲Thread.getId()狀態API文檔中,ID被答應是唯一的和恆定期間它的壽命:

返回該線程的標識符。線程ID是創建此線程時生成的正數 長整數。 線程ID是唯一的,並且在其生命週期中保持不變。 當一個線程被終止時,這個線程ID可能被重用。

因此,更改線程ID是不可能的,並且允許更改ID將違反此規定。

+0

同意謝謝:) –