可能的重复:
java string.equals verus ==
我正在编写一个程序来模拟野兔和乌龟比赛!我正在使用getName()查看哪些对象线程正在执行,并根据我递增对象值。这是我的代码:
public void run()
{
try{
for(int i=0;i<100;i++)
{
System.out.println(Thread.currentThread().getName());
if(Thread.currentThread().getName() == "HARE")
{
hare++;
System.out.println("hare thread");
Thread.sleep(100);
if(hare == 49)
{
Thread.sleep(2000);
}
}
if(Thread.currentThread().getName() == "TURTLE")
{
turtle++;
Thread.sleep(250);
System.out.println("Turtle Thread");
}
问题是,甚至认为它可以准确地检测到线程的名称,但它永远不会进入IF块。P.S我是Java多线程的新手。感谢您浏览代码。
Thread.currentThread().getName() == "HARE"
您无法以这种方式比较字符串。
Thread.currentThread().getName().equals("HARE");
equals
方法很敏感。
在比较字符串/对象时,您需要使用.eqauls()
而不是==
。
因此,您的代码应该像以下内容:
Thread.currentThread().getName().equals("HARE")
==
比较参考平等,这意味着两个引用指向同一对象。 equals()
方法确实是内容eqaulity,换句话说,检查字符串是否相同(这是您需要的)。