黑马程序员技术交流社区
标题:
看下为啥上面的程序不打印而下面的程序只从201开始打印
[打印本页]
作者:
费破的可
时间:
2013-10-27 09:45
标题:
看下为啥上面的程序不打印而下面的程序只从201开始打印
本帖最后由 费破的可 于 2013-10-27 10:31 编辑
class Demo implements Runnable
{
public void run()
{
for(int x=0; x<50; x++)
{
System.out.println(Thread.currentThread().toString()+"....."+x);
Thread.yield();//暂停进程
}
}
}
class JoinDemo
{
public static void main(String[] args) throws Exception
{
Demo d = new Demo();
Thread t1 = new Thread(d);
Thread t2 = new Thread(d);
t1.start();
t2.start();
for(int x=0; x<500; x++)
{
System.out.println(Thread.currentThread()+"....."+x);
}
}
}
作者:
杨增坤
时间:
2013-10-27 10:18
也许是你控制台显示的大小问题,你把循环的次数定义小点,就看见从0开始了
作者:
麦子
时间:
2013-10-27 10:41
没运行,但我给你分析分析:
你这程序不就是三个线程嘛,main,Thread-0,thread-1;
Thread-0,thread-1这两个线程打印的是:System.out.println(Thread.currentThread().toString()+"....."+x);
而main线程打印的是:System.out.println(Thread.currentThread()+"....."+x);
看了你得程序应该是三个线程交替打印:
Thread-0,thread-1这两个线程分别从0打印到49
main线程从0打印到499
至于每次运行的结果肯能不同,跟硬件,操作系统等的不同都会影响其运行结果的次序
你说的是main线程从201开始打印起的?应该是从0开始的,你再跑一次自习看看结果,好好的分析下
好好学习哦,不懂的可以问我
作者:
0从谷0
时间:
2013-10-27 10:44
以我看这个程序的结果会是:先打印main线程,然后t1、t2线程交替打印。
结果大概如下:
thread-main....0
thread-main....1
....
....
thread-main....498
thread-main....499
thread-0....0
thread-1....0
....
....
thread-0....49
thread-1....49
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2