Java基础---多线程中的小知识点:join()方法
2015-04-06 21:57
363 查看
首先:要明确join() 方法的作用:让“主线程”等待“子线程”结束之后才能继续运行。
记着是主线程!!!你可以理解为:“父”执行调用到“子”,并不一定非得是main方法,而是调用到“子”线程的“父线程”才是主线程。
接着看代码:
此时,一共三个线程(主线程,t1,t2),cpu资源在 t2 手里。除非下一刻main(主线程)抢到执行权,否则 t1 或者 t2 会交替执行也可能 t2继续保持执行权。假设主线程(你的例子里是main方法)方法抢到执行权执行到 t1.join();主线程就开始等待,直到t1执行的停止(此时只有 t1 和 t2 在抢夺执行权);此刻主线程不管t2如何,只要
t1 一旦停止执行,它就和 t1、t2 再一起抢夺执行权,此时这个 join()方法也就执行过去了,剩下的时间就是三个线程相互抢了(因为默认优先级都是5,不存在谁抢的更多,多运行几次就知道了)。所以此刻不关 t2 它什么事。
记着是主线程!!!你可以理解为:“父”执行调用到“子”,并不一定非得是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 它什么事。
相关文章推荐
- Java多线程知识点总结——进阶篇(十二) 之 Join方法 & 优先级 & yield方法
- Java并发编程基础---(6)Java多线程的Join方法详解
- 黑马程序员:Java基础——多线程的停止与守护以及Join,优先级和yield方法
- java 多线程系列基础篇(八)之join()、start()、run()方法
- java基础学习__多线程(停止线程,守护线程,join方法)
- Java-----多线程小知识点:join()方法和守护线程
- java多线程系列_join方法的使用(5)
- 转载:Java多线程中join方法的理解
- java例程练习(多线程[join()方法])
- JAVA 基础笔记|多线程的实现方法
- 五、初学Java多线程:join方法的使用
- java基本教程之join方法详解 java多线程教程
- 5. 初学Java多线程:join方法的使用
- java基础问题---多线程有几种实现方法
- java多线程基础知识点总结
- 【Java基础】并发 - 多线程 - Thread.join(..)
- Java多线程基础篇二------常用方法
- java例程练习(多线程[join()方法])
- java多线程中的join方法详解
- Java基础之多线程(二)--通讯、生产者消费者、停止、Jion方法