至於我能理解從java.lang.Thread
文檔,並從這裏張貼在計算器其他的問題,比如「How to access a Runnable object by Thread?」和「Get current instance of Runnable」這是不可能得到嵌入Thread
的Runnable
對象的引用。爲什麼無法將Runnable嵌入到線程中?
有這種可能性的場景是有用的是當實現一個方法,其簽名不能被修改,因爲我們重寫了另一個類或接口定義的方法,並且需要執行不同的操作,具體取決於嵌入在當前Thread
中的Runnable
類型。
如果我們的方法。例如在Thread
類稱爲getRunnable
,我們可以做這樣的事情:
if (Thread.currentThread().getRunnable() instanceof Type1) {
// do something...
} else {
// do something else...
}
這可能在以下情況下也很有用,當我們想確保這一個方法的操作只能由某些線程執行而不能由其他線程執行。
所以我想知道,爲什麼Java開發人員決定不允許從Thread
獲得Runnable
實例,或者這是一個值得通知的缺失功能嗎?如果您認爲選擇背後沒有理由,但不值得將其作爲缺失功能通知,那麼您將在上述場景中使用什麼策略?
會是什麼 「可運行」 爲用'main'方法在主線程? –
@KirkWoll,'null'? –
像你在你的例子中那樣''instanceof'的結果分支幾乎不是一個好主意。 – NPE