Java多线程问题



可能的重复:
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,换句话说,检查字符串是否相同(这是您需要的)。

相关内容

  • 没有找到相关文章

最新更新