在很多情况下,主线程创建并启动子线程,如果子线程中要进行大量的耗时运算,主线程往往将早于子线程结束之前结束.这时,如果主线程想等待子线程执行完成之后再结束,比如子线程处理一个数据,主线程要取得这个数据中的值,就要用到join()方法了,方法join()的作用是等待线程对象被销毁. 代码示例: package com.test; public class TestJoin extends Thread { @Override public void run() { try { int second
转自:http://www.open-open.com/lib/view/open1371741636171.html 一.为什么要用join()方法 在很多情况下,主线程生成并起动了子线程,如果子线程里要进行大量的耗时的运算,主线程往往将于子线程之前结束,但是如果主线程处理完其他的事务后,需要用到子线程的处理结果,也就是主线程需要等待子线程执行完成之后再结束,这个时候就要用到join()方法了. 二.join方法的作用 在JDk的API里对于join()方法是: join public fin
package TestThread.ThreadSynchronized.TestInterruptedException; public class InterruptDemo { public static void main(String[] args) { TestWait t = new TestWait("线程1"); TestWait t1 = new TestWait("线程2"); Test te = new Test("线程3&quo
Thread.yield()方法作用是:暂停当前正在执行的线程对象,并执行其他线程. yield()应该做的是让当前运行线程回到可运行状态,以允许具有相同优先级的其他线程获得运行机会.因此,使用yield()的目的是让相同优先级的线程之间能适当的轮转执行.但是,实际中无法保证yield()达到让步目的,因为让步的线程还有可能被线程调度程序再次选中. 结论:yield()从未导致线程转到等待/睡眠/阻塞状态.在大多数情况下,yield()将导致线程从运行状态转到可运行状态,但有可能没有效果. pu