您的位置:首页 > 编程语言 > Java开发

Java基础---多线程中的小知识点:join()方法

2015-04-06 21:57 363 查看
    首先:要明确join() 方法的作用:让“主线程”等待“子线程”结束之后才能继续运行。
记着是主线程!!!你可以理解为:“父”执行调用到“子”,并不一定非得是main方法,而是调用到“子”线程的“父线程”才是主线程。

    接着看代码:

class Join implements Runnable
{
public void run()
{
for(int x=0; x<70; x++)
{
System.out.println(Thread.currentThread().getName()+"....."+x);
}
}
}
class JoinDemo
{
public static void main(String[] args) throws Exception
{
Join j = new Join();
Thread t1 = new Thread(j);
Thread t2 = new Thread(j);
t1.start();
t2.start();
t1.join();

for (int x=0;x<80 ;x++ )
{
System.out.println("main______"+x);
}
}
}

    此时,一共三个线程(主线程,t1,t2),cpu资源在 t2 手里。除非下一刻main(主线程)抢到执行权,否则 t1 或者 t2 会交替执行也可能 t2继续保持执行权。假设主线程(你的例子里是main方法)方法抢到执行权执行到 t1.join();主线程就开始等待,直到t1执行的停止(此时只有 t1 和 t2 在抢夺执行权);此刻主线程不管t2如何,只要
t1 一旦停止执行,它就和 t1、t2 再一起抢夺执行权,此时这个 join()方法也就执行过去了,剩下的时间就是三个线程相互抢了(因为默认优先级都是5,不存在谁抢的更多,多运行几次就知道了)。所以此刻不关 t2 它什么事。
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  thread 线程 多线程 join