资讯专栏INFORMATION COLUMN

java并发编程学习之线程的生命周期-join(四)

xavier / 1898人阅读

摘要:定义等待该线程终止,比如线程调用了线程的,那么线程要等到线程执行完后,才可以继续执行。

定义

等待该线程终止,比如A线程调用了B线程的join,那么A线程要等到B线程执行完后,才可以继续执行。

示例
public class JoinDemo {
    static class JoinThread1 implements Runnable {
        Thread thread;

        public JoinThread1(Thread thread) {
            this.thread = thread;
        }

        @Override
        public void run() {
            System.out.println("thread1 start");
            try {
                thread.join();
                System.out.println("thread1 end");
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

    static class JoinThread2 implements Runnable {
        @Override
        public void run() {
            System.out.println("thread2 start");
            try {
                Thread.sleep(10000);
                System.out.println("thread2 end");
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

    public static void main(String[] args) {
        JoinThread2 joinThread2 = new JoinThread2();
        Thread thread2 = new Thread(joinThread2);
        JoinThread1 joinThread1 = new JoinThread1(thread2);
        Thread thread1 = new Thread(joinThread1);

        thread1.start();
        thread2.start();
    }
}

运行结果如下:

线程1执行的时候,调用线程2的join,线程1不休眠,线程2休眠了10秒,从结果看出来,线程2执行完后,线程1才执行完。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/75216.html

相关文章

  • java并发编程习之线程生命周期(一)

    摘要:就绪状态调用或者由阻塞状态被解除时,进入就绪状态,此时,只能表示线程可以运行了,但不代表已经运行了,需要等待的调度。死亡状态当线程执行结束或者异常等,线程就会结束,进入死亡状态。 流程图 showImg(https://segmentfault.com/img/bVbuJ6f); 新建状态 当用new创建一个线程后,线程就处于新建状态,此时和其他普通java对象一样,由JVM创建内存空...

    AndroidTraveler 评论0 收藏0
  • java并发编程习之线程生命周期-wait,notify,notifyall(六)

    摘要:不释放持有的锁,释放锁。在调用方法前,必须持有锁,调用唤醒,也要持有锁。休眠一定时间后,进入就绪状态。这两个都能被方法中断当前状态。用法方获取锁判断条件,不满足继续满足执行其他业务方获取锁改变条件通知为什么是而不是会一直循环,直到条件满足。 sleep和wait sleep是Thread类的方法,wait是Object的方法。 sleep可以到处使用,wait必须是在同步方法或者代码...

    Terry_Tai 评论0 收藏0
  • java并发编程习之线程生命周期-start(二)

    摘要:与执行方法,是用来启动线程的,此时线程处于就绪状态,获得调度后运行方法。执行方法,相对于普通方法调用,在主线程调用。程序是顺序执行的,执行完才会执行下面的程序。 start与run 执行start方法,是用来启动线程的,此时线程处于就绪状态,获得调度后运行run方法。run方法执行结束,线程就结束。 执行run方法,相对于普通方法调用,在主线程调用。程序是顺序执行的,执行完才会执行下...

    bigdevil_s 评论0 收藏0
  • java并发编程习之线程生命周期-sleep(五)

    摘要:在指定毫秒数内,让正在执行的当前线程进入休眠期。示例运行结果如下结果可以看出,线程的两次时间相差毫秒,的两次时间相差毫秒,只影响自己的线程运行,不影响其他线程。 sleep 在指定毫秒数内,让正在执行的当前线程进入休眠期。 示例 public class SleepDemo extends Thread { @Override public void run() { ...

    xi4oh4o 评论0 收藏0
  • java并发编程习之线程生命周期-yield(三)

    摘要:方法作用让当前的线程状态从运行状态转到就绪状态,然后和其他就绪状态的同相同优先级的其他线程竞争的执行权。也就是说,这个线程,还是有机会继续再次执行的。 方法作用 让当前的线程状态从运行状态转到就绪状态,然后和其他就绪状态的同相同优先级的其他线程竞争CPU的执行权。也就是说,这个线程,还是有机会继续再次执行的。 优先权 优先级范围是1~10,数字越大,优先级越高,默认为5,但是由于操作系...

    Barry_Ng 评论0 收藏0

发表评论

0条评论

xavier

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<