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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郑世光 中级黑马   /  2012-8-27 18:31  /  1865 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

当程序执行到t1.join(); 时,有没有可能是:此时正在执行的进程是t2,然后t1.join(); 让t2放弃了cpu。当t1执行完了,t2才会执行。


class Demo implements Runnable
{
        public void run()
        {
                for(int x=0; x<70; x++)
                {
                        System.out.println(Thread.currentThread().toString()+"....."+x);
                }
        }
}


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();
                t1.join();     
                for(int x=0; x<80; x++)
                {
                        System.out.println("main....."+x);
                }
                System.out.println("main over");
        }
}

4 个回复

倒序浏览
楼主的代码中t1.join();是写在主线程中的,所以现象应该会是当主线程执行到t1.join();时,主线程放弃CPU执行权,此时应该CPU对t1和t2交替执行。
等t1执行完后,主线程才醒过来,此时如果t2没执行完,CPU就对主线程和t2交替执行。
回复 使用道具 举报
是不是执行t1.join();语句的是主进程,所以此时放弃cpu的一定是当前执行的主进程。
回复 使用道具 举报
郑世光 发表于 2012-8-27 18:58
是不是执行t1.join();语句的是主进程,所以此时放弃cpu的一定是当前执行的主进程。 ...

是的,在毕老师12天的视频中有讲到
回复 使用道具 举报
楼主多运行几次程序,应该能观察出结果
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马