Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
线程化Java代码问题_Java_Multithreading - Fatal编程技术网

线程化Java代码问题

线程化Java代码问题,java,multithreading,Java,Multithreading,我是这里的初学者,开始学习java编程 我写了一个程序来尝试线程。在一个班里,我写了一个程序来显示从一到100的数字,在另一个班里,我写了一个从999到100的数字。现在,我主要为类(r1,r2)创建了一个对象引用,并为线程创建了一个对象,并将它们作为参数传递(我的类的r1,r2对象引用)。现在,我得到的输出并不像预期的那样,在某种程度上,我觉得我的第二个线程没有得到执行。我不确定我的逻辑或程序是否有问题。如有任何帮助/建议,将不胜感激。下面是我的代码供参考 第1类: public class

我是这里的初学者,开始学习java编程

我写了一个程序来尝试线程。在一个班里,我写了一个程序来显示从一到100的数字,在另一个班里,我写了一个从999到100的数字。现在,我主要为类(r1,r2)创建了一个对象引用,并为线程创建了一个对象,并将它们作为参数传递(我的类的r1,r2对象引用)。现在,我得到的输出并不像预期的那样,在某种程度上,我觉得我的第二个线程没有得到执行。我不确定我的逻辑或程序是否有问题。如有任何帮助/建议,将不胜感激。下面是我的代码供参考

第1类:

public class Run implements Runnable {

@Override
public void run() {

    for (int i = 0; i < 100; i++) {
        try {

            Thread.sleep(200);
        } catch (InterruptedException ex) {
            Logger.getLogger(Run.class.getName()).log(Level.SEVERE, "...", ex);
        }
        System.out.println(i);
    }
}
}
主要类别:

public class Threading {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {

    Run r= new Run();
    Thread t1=new Thread(r);
     t1.start();

    Run2 r2=new Run2();
    Thread t2=new Thread(r2);

    t2.start();


}

}

将Run2的方法
Run2
重命名为
run
。你是线程的子类,所以你得到了一个run方法,它什么都不做(实际上它检查它是否在一个目标runnable中传递,在这种情况下它在目标上调用run,但是由于目标为null,它什么也不做),这就是为什么要运行它


养成实现Runnable而不是扩展线程的习惯,并使用@Override注释来发现错误,即您认为您正在重写某些内容,但实际上并没有重写。

将Run2的方法
Run2
重命名为
run
。你是线程的子类,所以你得到了一个run方法,它什么都不做(实际上它检查它是否在一个目标runnable中传递,在这种情况下它在目标上调用run,但是由于目标为null,它什么也不做),这就是为什么要运行它


养成实现Runnable而不是扩展Thread的习惯,并使用@Override注释来发现错误,即您认为您正在重写某些内容,但实际上并没有重写。

您的类Run2的方法应命名为run而不是Run2。

您的类Run2的方法应命名为run而不是Run2。

@user2271636:np,这是一个很容易犯的错误。希望这有帮助。@user2271636:np,这是一个很容易犯的错误。希望这有帮助。
public class Threading {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {

    Run r= new Run();
    Thread t1=new Thread(r);
     t1.start();

    Run2 r2=new Run2();
    Thread t2=new Thread(r2);

    t2.start();


}

}