多线程调度相关的java

时间:2010-03-27 20:14:20

标签: java multithreading

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)两者都会以任意方式获得机会

请建议可能的解释

1 个答案:

答案 0 :(得分:2)

您的代码中没有显示同步 - 两个线程都将运行。现在控制台访问可能在某处同步,但基本上我希望看​​到类似的东西:

H1Vichi
H1Vichi
H1Vichi
H1Vichi
H1Vichi
H1Vishu
H1Vishu
H1Vishu
H1Vishu
H1Vichi
H1Vichi
H1Vichi
H1Vichi
H1Vishu
H1Vichi

等 - 不可预测,并且取决于您机器内的核心数量。我怀疑你只是因为控制台同步而得到输出块,但你不应该依赖它。

基本上没有理由说两个独立线程都不会同时运行,只是因为它们碰巧共享相同的可运行目标。