class A implements Runnable{
B b=new B();
public void run(){
while(true){
System.out.println("H1"+Thread.currentThread().getName());
}
}
}
public class Test {
public static void main(String[] str){
A a1 =new A();
// A a2 =new A();
//
Thread t1 =new Thread(a1, "Vichi");
Thread t2 =new Thread(a1,"Vishu");
t1.start();
t2.start();
}
}
什么是ans: 1)只有其中一个人有机会执行 2)两者都会以任意方式获得机会
请建议可能的解释
答案 0 :(得分:2)
您的代码中没有显示同步 - 两个线程都将运行。现在控制台访问可能在某处同步,但基本上我希望看到类似的东西:
H1Vichi
H1Vichi
H1Vichi
H1Vichi
H1Vichi
H1Vishu
H1Vishu
H1Vishu
H1Vishu
H1Vichi
H1Vichi
H1Vichi
H1Vichi
H1Vishu
H1Vichi
等 - 不可预测,并且取决于您机器内的核心数量。我怀疑你只是因为控制台同步而得到输出块,但你不应该依赖它。
基本上没有理由说两个独立线程都不会同时运行,只是因为它们碰巧共享相同的可运行目标。