为什么我运行代码时obj.start()不运行?

时间:2019-10-10 05:18:21

标签: java multithreading

我正在学习Java并在sololearn.com上进行练习,我复制了其中一个示例来练习键入代码。但是这里的代码-

//Create myClass
class Loader extends Thread {
    public static void main(String[] args) {

    }
    public void run(){
        System.out.println("Hello Young World");
    }
}
public class MyClass {
    public static void main(String[] args) {
        Loader obj = new Loader();
        obj.start();
    }
}

没有在控制台上打印“ Hello Young World”。实际上,为了运行MyClass.java,我必须向Loader类添加一个“ main()”方法。但是,在示例中,他们的代码无需在Loader中包含main方法即可运行。也许他们已经定制了环境以允许这种类型的编码,而IntelliJ只是有不同的规则。请有人可以将代码复制到他们的计算机上,然后使用IntelliJ运行它,看看他们是否遇到相同的问题?

我已经解决了问题,但是代码似乎很可靠。

2 个答案:

答案 0 :(得分:1)

我猜您启动了错误的main方法(Loader类的主类为空)。如前所述,您不必在main类中添加Loader方法。请删除该方法,然后从main开始使用MyClass方法。

如果您有几种主要方法,则可以选择在运行配置中应执行的一种。在您的示例中,它应如下所示:

run configurations

在这种情况下,请确保选择要执行的任务。

执行右主方法的另一种方法是选择包含主方法的类,然后单击左侧的播放按钮:

enter image description here

答案 1 :(得分:0)

要在控制台中运行该程序,我必须使用“ java MyClass”,而不是运行“ java MyClass.java”,该文件执行了整个文件,而不仅仅是执行了我要调用的主要方法的类!

要在IntelliJ中运行该程序,我必须确保如上所述正确地调用了正确的Class。