package thread1;
//为什么这个程序没有线程的效果?它是先执行完a,再执行b。而不是a,b穿叉执行?
public class test_thread {
public static void main(String[] args) {
Thread a=new Thread(new A());
Thread b=new Thread(new B());
a.start();
b.start();
}}
class A implements Runnable{
public void run()
{
for(int i=0;i<100;i++)
{
System.out.println("A: "+i);
}
}
}
class B implements Runnable {
public void run()
{
for(int i=0;i<100;i++)
{
System.out.println("B: "+i);
}
}
}

解决方案 »

  1.   

    速度太快,看不出效果,建议将 100修改为10000,或者在for循环内部加一个Thread.sleep(100)这样的东西。你这个没出来效果是因为100太小,程序执行速度太快,造成的。
      

  2.   

    我的是穿插执行的,你可以这样试试:
    class A1 implements Runnable{ @Override
    public void run() {
    // TODO Auto-generated method stub
    for(int i = 0; i < 100; i++){
    System.out.println("A:" + i);
    try{
    Thread.sleep(1000);
    }
    catch(InterruptedException e){

    }
    }
    }

    }
      

  3.   

    属于多实例多线程,两个线程实例(其实还有main方法主线程)由cpu调度执行,有不确定性,交叉出现是一种可能的结果。用sleep方法让线程休眠几秒会看到结果。建议线程测试多次,这样不同结果的概率会大些,更好的理解线程。
      

  4.   

    你的电脑是双核或者是四核导致的  代码没有什么问题    加上Thread.sleep()方法效果明显些