初学自学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在运行。");
}
}
自己敲的代码运行结果:
书中的代码
书中的运行结果
不一样是正常的,这段代码的意思是 开启一个线程去打印10次“TestThread 在运行”,同时自己也循环10次打印“main 线程在运行”。
打个比方你告诉一个人“让他去做一件事情做10遍“,之后你自己也做类似的事情10遍。你们两个同时做这样的事情,你完成一件事、他完成一件事、他完成一件事、你完成一件事。。。 到底最后你们完成这些任务的顺序是什么样子的呢?这个是跟你们两个实际做事的人的效率相关。
建议你了解下线程的概念。
书上的有问题!
这里是两个线程同时运行,因而实际情况就是不一定哪个线程抢到CPU调度,所以输出不会如书上那么规律,而是你实际的输出,是无规律的。
书中写的太巧合,有点误导。