有很多人在項目上工作,我想確保每個人都給他們的線程賦予邏輯名稱,以便它們易於調試和讀取日誌。如何確保沒有自定義名稱的情況下不創建線程?
我試過了,但是由於後來我意識到的一個非常根本的原因,它失敗了。我將這段代碼放在這裏,以便它使我的目的更加清晰。
public abstract class MyRunnableAbstract implements Runnable
{
public MyRunnableAbstract (String pThreadName)
{
Thread.currentThread().setName(pThreadName);
}
}
在這裏,每個想要創建線程的人都必須擴展這個類,而不是直接實現Runnable。這樣,您必須將名稱傳遞給超級構造函數而不會失敗。
由於構造函數是作爲父線程的一部分執行的,因此currentThread()
設置父線程的名稱,而不是正在創建的父線程的名稱。
但我想做類似的事情,沒有人能夠不通過名稱就能創建線程。
有沒有辦法?
在此先感謝。
是什麼讓你認爲開發人員會尊重擴展該類的規則而不是實現Runnable?這很容易違反,因爲忘了給一個名字來創建一個線程。坦率地說,一個好的應用程序應該很少創建線程。大多數情況下,使用更高級別的抽象(ExecutorService)是正確的解決方案。 –
有一種方法,它被稱爲「代碼審查」。 - 沒有人檢查到源代碼存儲庫的任何更改,直到更改由另一個團隊成員審查。而且,如果有人拒絕按規則參加比賽,那麼你將他們踢出球隊。 –