A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 费破的可 于 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);
                }
        }
}

评分

参与人数 1技术分 +1 收起 理由
杨增坤 + 1

查看全部评分

3 个回复

正序浏览
以我看这个程序的结果会是:先打印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
回复 使用道具 举报
没运行,但我给你分析分析:
   你这程序不就是三个线程嘛,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开始的,你再跑一次自习看看结果,好好的分析下
    好好学习哦,不懂的可以问我
   

评分

参与人数 1技术分 +1 收起 理由
To + 1 很给力!

查看全部评分

回复 使用道具 举报
也许是你控制台显示的大小问题,你把循环的次数定义小点,就看见从0开始了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马