温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java顺序执行线程的方法

发布时间:2020-06-24 11:46:40 来源:亿速云 阅读:186 作者:Leah 栏目:编程语言

这篇文章运用简单易懂的例子给大家介绍java顺序执行线程的方法,代码非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

我们需要完成这样一个应用场景:

1.早上;2.测试人员、产品经理、开发人员陆续的来公司上班;3.产品经理规划新需求;4.开发人员开发新需求功能;5.测试人员测试新功能。

规划需求,开发需求新功能,测试新功能是一个有顺序的,我们把thread1看做产品经理,thread2看做开发人员,thread3看做测试人员。

使用线程的 join 方法

join():是Theard的方法,作用是调用线程需等待该join()线程执行完成后,才能继续用下运行。

应用场景:当一个线程必须等待另一个线程执行完毕才能执行时可以使用join方法。

实例如下:

package com.zhangsf.javabase.thread.order;
/**
 * @author zhangsf
 * 通过子程序join使线程按顺序执行
 */
public class ThreadJoinDemo {
    public static void main(String[] args) {
        final Thread thread1 = new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("产品经理规划新需求");
            }
        });
        final Thread thread2 = new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    thread1.join();
                    System.out.println("开发人员开发新需求功能");
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });
        Thread thread3 = new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    thread2.join();
                    System.out.println("测试人员测试新功能");
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });
        System.out.println("早上:");
        System.out.println("测试人员来上班了...");
        thread3.start();
        System.out.println("产品经理来上班了...");
        thread1.start();
        System.out.println("开发人员来上班了...");
        thread2.start();
    }
}

运行结果:

java顺序执行线程的方法

使用主线程的 join 方法

这里是在主线程中使用join()来实现对线程的阻塞。

package com.zhangsf.javabase.thread.order;
/**
 * @author zhangsf
 * 通过主程序join使线程按顺序执行
 */
public class ThreadMainJoinDemo {
    public static void main(String[] args) throws Exception {
        final Thread thread1 = new Thread(new Runnable() {
            @Override
            public void run() {
              System.out.println("产品经理正在规划新需求...");
            }
        });
        final Thread thread2 = new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("开发人员开发新需求功能");
            }
        });
        final Thread thread3 = new Thread(new Runnable() {zzzz
            @Override
            public void run() {
                System.out.println("测试人员测试新功能");
            }
        });
        System.out.println("早上:");
        System.out.println("产品经理来上班了");
        System.out.println("测试人员来上班了");
        System.out.println("开发人员来上班了");
        thread1.start();
        //在父进程调用子进程的join()方法后,父进程需要等待子进程运行完再继续运行。
        System.out.println("开发人员和测试人员休息会...");
        thread1.join();
        System.out.println("产品经理新需求规划完成!");
        thread2.start();
        System.out.println("测试人员休息会...");
        thread2.join();
        thread3.start();
    }
}

运行结果:

java顺序执行线程的方法

关于java顺序执行线程的方法就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI