黑马程序员技术交流社区
标题:
join方法问题
[打印本页]
作者:
郑世光
时间:
2012-8-27 18:31
标题:
join方法问题
当程序执行到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");
}
}
作者:
周兴华
时间:
2012-8-27 18:49
楼主的代码中
t1.join();是写在主线程中的
,所以现象应该会是当主线程执行到t1.join();时,主线程放弃CPU执行权,此时应该CPU对t1和t2交替执行。
等t1执行完后,主线程才醒过来,此时如果t2没执行完,CPU就对主线程和t2交替执行。
作者:
郑世光
时间:
2012-8-27 18:58
是不是执行t1.join();语句的是主进程,所以此时放弃cpu的一定是当前执行的主进程。
作者:
周兴华
时间:
2012-8-27 19:00
郑世光 发表于 2012-8-27 18:58
是不是执行t1.join();语句的是主进程,所以此时放弃cpu的一定是当前执行的主进程。 ...
是的,在毕老师12天的视频中有讲到
作者:
周兴华
时间:
2012-8-27 19:01
楼主多运行几次程序,应该能观察出结果
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2