控制线程的执行顺序

本文介绍了一种使用Java中的join()方法控制多个线程按指定顺序执行的方法。通过实例演示了如何让三个线程A1、A2、A3依次执行。

最近看到很多人在问这样一个线程问题:现在有A1,A2,A3三个线程,正常情况下他们的执行顺序是没有规律的,然而现在我们想要的是他们要按照我们要求的顺序来执行,比如A1——>A2——>A3这样一个执行顺序;该怎么实现?说到这里,固然想到用 join()方法;话不多说,直接上代码:

/**
 * 控制线程的执行顺序
 * 
 * @author zhaoheng
 *
 */
public class Text1 {

    public static void main(String[] args) throws InterruptedException {
        // 创建线程1
        final Thread thread1 = new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("线程---1");

            }
        });
        // 创建线程2
        final Thread thread2 = new Thread(new Runnable() {

            @Override
            public void run() {
                try {
                    // 该方法使运行状态的线程2编程阻塞态
                    thread1.join();
                } catch (InterruptedException e) {

                    e.printStackTrace();
                }
                System.out.println("线程---2");

            }
        });

        final Thread thread3 = new Thread(new Runnable() {

            @Override
            public void run() {
                try {
                    // 该方法使运行状态的线程3编程阻塞态
                    thread2.join();
                } catch (InterruptedException e) {

                    e.printStackTrace();
                }
                System.out.println("线程---3");

            }
        });

        // 启动线程
        thread1.start();
        thread2.start();
        thread3.start();

    }

}

运行结果

线程---1
线程---2
线程---3

join()方法是可阻断运行态的线程的,使正在运行的线程由运行态转变为阻塞态然后运行插入的线程,当插入的线程运行之后,再运行被阻塞的线程,这样就做到了控制线程的执行顺序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值