我已经学习Java已经有好几个月了,并且最近开始自学多线程,但是,我得到的输出是不一致的。请参阅以下代码:
public class App{
public static void main(String args[]){
outterclass object = new outterclass();
object.start();
outterclass objecttwo = new outterclass();
objecttwo.start();
}
}
class outterclass extends Thread{
public void run(){
System.out.println("One");
System.out.println("Two");
System.out.println("Three");
}
}
我理解线程的概念,它应该在OS上的一个单独的线程上运行,并且我的代码中的两个类型为thread的对象,例如object和objecttwo,理论上可以同时或同时运行,问题是,SOMETIMES有时候是这样的。 有时我的输出是:One One Two Two Three Three,但是其他运行时间是一个二三一二三仿佛它们是在同一主线程上的常规调用,而不是同时运行..
为什么这是我两个问题中的第一个。
关于我的第二个问题,我实际上知道静态Thread.sleep(MS); Thread类的方法,我注意到当我放一个Thread.sleep();在run方法中的每个sysout调用之间的方法,我的Thread扩展类的两个实例确实似乎每次都同时运行。所以,话虽如此,我的第二个问题是我是否需要利用Thread.sleep();实现多线程的方法,或者只是为了确保单独的线程类的两个实例同时运行?
感谢所有提前