2016-11-27 47 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