首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

说一上多线程中用到的join

2012-09-07 
说一下多线程中用到的join? ? ?join:调用线程等待被调用线程执行结束方可执行下面的操作,使用的场景如下,

说一下多线程中用到的join

? ? ?join:调用线程等待被调用线程执行结束方可执行下面的操作,使用的场景如下,主线程需要调用一个线程A去异步执行一个操作,同时主线程必须等到线程A执行完毕才能执行,join就派上用场了。

? ? 具体实现也简单,通过一个线程来判断线程A时候执行完成,用isAlive()判断,如果依然在执行(存活),调用线程A的wait()使主线程等待。

 public final synchronized void join(long millis)    throws InterruptedException {        long base = System.currentTimeMillis();        long now = 0;        if (millis < 0) {            throw new IllegalArgumentException("timeout value is negative");        }        if (millis == 0) {            while (isAlive()) {                wait(0);//如果指定时间,则等到线程A执行结束为止            }        } else {            while (isAlive()) {                long delay = millis - now;                if (delay <= 0) {                    break;                }               //等待指定的时间                wait(delay);                now = System.currentTimeMillis() - base;            }        }    }
?

? ? isALive()是个navite方法,怎么判断线程是否alive,是否是执行完run方法就结束了alive为false呢,同时线程alive为false后,就能唤醒wait阻塞的线程,效果和notify是一样的吗?

?

热点排行