我按孙鑫的视频教程运行他的一道例子,结果为什么跟他的不一样???
class MultiThread
{
public static void main(String[] args)
{
MyThread mt = new MyThread();
new Thread(mt).start();
new Thread(mt).start();
new Thread(mt).start();
new Thread(mt).start();
while (true)
{
System.out.println( "main : " + Thread.currentThread().getName());
}
}
}
class MyThread implements Runnable
{
int index = 0;
public void run()
{
while (true)
{
System.out.println( "thread : " + Thread.currentThread().getName() + " : " + index++);
}
}
}
他说index的值是连续的,我看他运行的也是,但在我的机器上运行却不是连续,产生的进程对象顺序也不是连续的,为什么呢????
------解决方案--------------------你把while(true)改成,while(index <100),看一下一开始的几个值.
个人感觉是因为几个线程都取得了index的值,但只能有一个线程在屏幕上打印,其他的都被卡在out.println那了
------解决方案--------------------应该是连续的
------解决方案--------------------我运行的是无限循环.
------解决方案--------------------不应该是连续的,四个mt同名线程哪个先运行那个后运行完全是不可知的,所以打印出的结果不连续。这是我运行的结果:
thread : Thread-3 : 4519
thread : Thread-3 : 4520
thread : Thread-3 : 4521
thread : Thread-3 : 4522
thread : Thread-0 : 4499
thread : Thread-0 : 4524
thread : Thread-0 : 4525
thread : Thread-0 : 4526
thread : Thread-0 : 4527
thread : Thread-0 : 4528
thread : Thread-0 : 4529
thread : Thread-0 : 4530
main : main
main : main
main : main
main : main
main : main
main : main
main : main
main : main
thread : Thread-3 : 4531
thread : Thread-3 : 4533
thread : Thread-3 : 4534
thread : Thread-3 : 4535
thread : Thread-3 : 4536
thread : Thread-3 : 4537
thread : Thread-3 : 4538
thread : Thread-3 : 4539
thread : Thread-1 : 4523
thread : Thread-1 : 4540
thread : Thread-1 : 4541
thread : Thread-1 : 4542
thread : Thread-1 : 4543
thread : Thread-1 : 4544
thread : Thread-1 : 4545
thread : Thread-1 : 4546
thread : Thread-2 : 4515
thread : Thread-2 : 4548
thread : Thread-2 : 4549
thread : Thread-2 : 4550
thread : Thread-2 : 4551
thread : Thread-2 : 4552
thread : Thread-2 : 4553
thread : Thread-2 : 4554
thread : Thread-3 : 4547
thread : Thread-3 : 4556
thread : Thread-3 : 4557
thread : Thread-3 : 4558
thread : Thread-3 : 4559
thread : Thread-3 : 4560
thread : Thread-3 : 4561
thread : Thread-3 : 4562
main : main
main : main
main : main
main : main
main : main
main : main
main : main
main : main
thread : Thread-0 : 4532
thread : Thread-0 : 4565
thread : Thread-0 : 4566
thread : Thread-0 : 4567
thread : Thread-0 : 4568
thread : Thread-0 : 4569
thread : Thread-0 : 4570
thread : Thread-0 : 4571
thread : Thread-3 : 4564
thread : Thread-3 : 4572
thread : Thread-3 : 4573
thread : Thread-3 : 4574
thread : Thread-3 : 4575
thread : Thread-3 : 4576
thread : Thread-3 : 4577
thread : Thread-3 : 4578
thread : Thread-2 : 4563
thread : Thread-2 : 4580
thread : Thread-2 : 4581
thread : Thread-2 : 4582
thread : Thread-2 : 4583
thread : Thread-2 : 4584