SINOTRUCK
最爱重卡
采纳率100%
2017-03-08 13:47

Java多线程问题——同样的代码,得不到一样的结果?

已采纳

初学自学java,学到多线程时,按照书中例子里的代码自己手动敲了一遍,怎么都得不到和书中一样的输出结果,请问为什么会这样?
附上自己敲的代码&运行结果和书中的代码及其运行结果
自己敲的代码如下:

    public class ThreadDemo9_2
{
    public static void main(String args[])
    {
        TestThread t=new TestThread();
        new Thread(t).start();
        for(int i=0;i<10;i++)
            System.out.println("main线程在运行。");
    }
}
class TestThread implements Runnable
{
    public void run()
    {
        for(int i=0;i<10;i++)
            System.out.println("TestThread在运行。");
    }
}

自己敲的代码运行结果:

书中的代码

书中的运行结果

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

3条回答

  • qq_35079856 Ljcode_2014 4年前

    不一样是正常的,这段代码的意思是 开启一个线程去打印10次“TestThread 在运行”,同时自己也循环10次打印“main 线程在运行”。
    打个比方你告诉一个人“让他去做一件事情做10遍“,之后你自己也做类似的事情10遍。你们两个同时做这样的事情,你完成一件事、他完成一件事、他完成一件事、你完成一件事。。。 到底最后你们完成这些任务的顺序是什么样子的呢?这个是跟你们两个实际做事的人的效率相关。
    建议你了解下线程的概念。

    点赞 3 评论 复制链接分享
  • oyljerry oyljerry 4年前

    书上的有问题!
    这里是两个线程同时运行,因而实际情况就是不一定哪个线程抢到CPU调度,所以输出不会如书上那么规律,而是你实际的输出,是无规律的。

    点赞 2 评论 复制链接分享
  • SoundSlow 随风而醒 4年前

    书中写的太巧合,有点误导。

    点赞 评论 复制链接分享