join()

来源:互联网 发布:织梦58公司 编辑:程序博客网 时间:2024/05/16 13:01
/** * join方法 * 允许当前线程在另一个线程上等待,进入阻塞状态,直到 * 另一个线程运行完毕,当前线程才会解除阻塞,继续执行。 * 通常用于协调两个线程同步工作使用。 * @author Administrator * */public class ThreadDemo2 {    //标示图片下载状态    public static boolean isFinish = false;    public static void main(String[] args) {        //下载图片的线程        final Thread download = new Thread(){            public void run(){                System.out.println("download:开始下载图片");                for(int i=1;i<=100;i++){                    System.out.println("download:已完成"+i+"%");                    try {                        Thread.sleep(50);                    } catch (InterruptedException e) {                    }                }                System.out.println("download:下载图片完毕!");                isFinish = true;            }        };        Thread show = new Thread(){            public void run(){                System.out.println("show:开始显示图片!");                /*                 * 现在这里等待download将图片下载完毕!                 */                try {                    /*                     * 这里调用download.join()会使                     * show线程进入阻塞状态,直到download                     * 线程执行完毕才会解除。                     *                      * 当一个方法中的局部内部类中想引用当前方法的                     * 其他局部变量,那么该变量必须被声明为final                     * 的。JDK8.0后不再需要。                     */                    download.join();                } catch (InterruptedException e) {                }                if(!isFinish){                    throw new RuntimeException(                                "图片没有下载完毕!");                }                System.out.println("show:显示图片完毕!");            }        };              download.start();        show.start();    }}
0 0
原创粉丝点击