黑马程序员技术交流社区

标题: 看下为啥上面的程序不打印而下面的程序只从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