2016-11-27 48 views
-2

我是新來的線程,如何檢查線程是否處於等待狀態,如果它處於等待狀態,那麼我需要通知它。如何比較線程狀態

例如:有一個名爲's'的線程,當它被調用等待狀態時,只有通知狀態必須被調用。

是否有可能獲得,使用的getState()命令

對於防爆:

if(s.getState()=="WAITING")//To have a condition block like this 
+1

關於'if(x ==「WAITING」)''不要使用'=='或'!='比較字符串。改爲使用「equals(...)」或「equalsIgnoreCase(...)」方法。理解'=='檢查兩個*對象引用*是否相同,而不是你感興趣的。另一方面,方法檢查兩個字符串是否具有相同順序的相同字符,這就是這裏很重要。 –

+0

@HovercraftFullOfEels我的問題是我們如何比較Thread.State和String,我很抱歉,如果我錯誤地傳達了 – Renigunda

+1

[Java:我可以如何通知一個線程,只有當它在等待?](http:// stackoverflow.com/questions/20270122/java-how-can-i-notify-a-thread-only-if-it-is-waiting) –

回答

2

有Thread.State枚舉類型,也就是當你調用的getState你會得到什麼()上一個線程。以下代碼可能會有所幫助。

Thread t1 = new Thread(); 
Thread.State state = t1.getState(); 
System.out.println(state.equals(Thread.State.NEW)); 
// or 
if (Thread.getState().equals(Thread.State.WAITING) {} 
+0

但是它甚至有必要嗎?問題看起來是如何解決不存在的問題。 –

+0

我有這種感覺,但這是被問到的。也許這只是試驗。 – selimssevgi