2017-07-28 114 views

回答

0

是的,它完全是線程安全的。在JDK8全面推行是:

public long getId() { 
    return tid; 
} 

tid的建造Thread對象的過程中初始化一次,從來沒有改變之後。

如果您的代碼中存在問題,請將其解除,這就是您一旦擁有了並且使用ID爲而沒有獲取ID。

0

簡短的回答:是的,

長回答:線程安全手段防範競爭條件

/** 
* Returns the identifier of this Thread. The thread ID is a positive 
* <tt>long</tt> number generated when this thread was created. 
* The thread ID is unique and remains unchanged during its lifetime. 
* When a thread is terminated, this thread ID may be reused. 
* 
* @return this thread's ID. 
* @since 1.5 
*/ 
public long getId() { 
    return tid; 
} 

正如你看到的方法是不同步的,而tid是私有的,而不是最後宣佈,但是tid在私有方法init中設置,並且在此之後永遠不會更改,這使得tid的值不可變,從而使其成爲線程安全的

+0

因此,首先你回答否,然後刪除它,一旦我發佈你改變你的答案是和撤消刪除它。 –

+0

是的,作爲一個人能夠正確地盡我所需/需要我的答案....感謝評論:) –

+0

這將是一件好事,如果你在**發佈之前做了盡職調查**而不是之後。 –