java的join的效果

线程join具体的效果 

package com.wucj.service.thread;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * \* Created with IntelliJ IDEA.
 * \* @author: wucj
 * \* @date: 2020/3/22 21:25
 * \* @description:
 * \
 */
public class JoinUseThread implements Runnable{
    private static Logger log = LoggerFactory.getLogger(JoinUseThread.class);

    static class JumpRunable implements Runnable{
        private Logger log = LoggerFactory.getLogger(this.getClass());
        /** 被插队的线程 **/
        private Thread preThread;

        public JumpRunable(Thread preThread) {
            this.preThread = preThread;
        }

        @Override
        public void run() {
            try {
                preThread.join();
            } catch (InterruptedException e) {
                log.error("线程准备插入:{}失败",e);
            }
            log.info("线程:{}执行完毕",Thread.currentThread().getName());
        }
    }

    @Override
    public void run() {
        while (!Thread.currentThread().isInterrupted()){
            log.info("执行当前线程:{}",Thread.currentThread().getName());
        }
    }

    public static void main(String[] args) {
        int maxThread = 20;
        Thread preThread = Thread.currentThread();
        for (int i = 0; i < maxThread; i++) {
            Thread thread = new Thread(new JumpRunable(preThread),String.valueOf(i));
            log.info("被插入线程:{},插入线程:{}",preThread.getName(),thread.getName());
            thread.start();
            preThread = thread;
        }
        ThreadSleep.seconds(3);
        log.info("线程:{}执行完毕...",Thread.currentThread().getName());
    }

}
22:45:01.724 [main] INFO com.wucj.service.thread.JoinUseThread - 被插入线程:main,插入线程:0
22:45:01.729 [main] INFO com.wucj.service.thread.JoinUseThread - 被插入线程:0,插入线程:1
22:45:01.729 [main] INFO com.wucj.service.thread.JoinUseThread - 被插入线程:1,插入线程:2
22:45:01.729 [main] INFO com.wucj.service.thread.JoinUseThread - 被插入线程:2,插入线程:3
22:45:01.729 [main] INFO com.wucj.service.thread.JoinUseThread - 被插入线程:3,插入线程:4
22:45:01.729 [main] INFO com.wucj.service.thread.JoinUseThread - 被插入线程:4,插入线程:5
22:45:01.730 [main] INFO com.wucj.service.thread.JoinUseThread - 被插入线程:5,插入线程:6
22:45:01.730 [main] INFO com.wucj.service.thread.JoinUseThread - 被插入线程:6,插入线程:7
22:45:01.730 [main] INFO com.wucj.service.thread.JoinUseThread - 被插入线程:7,插入线程:8
22:45:01.730 [main] INFO com.wucj.service.thread.JoinUseThread - 被插入线程:8,插入线程:9
22:45:01.730 [main] INFO com.wucj.service.thread.JoinUseThread - 被插入线程:9,插入线程:10
22:45:01.730 [main] INFO com.wucj.service.thread.JoinUseThread - 被插入线程:10,插入线程:11
22:45:01.730 [main] INFO com.wucj.service.thread.JoinUseThread - 被插入线程:11,插入线程:12
22:45:01.731 [main] INFO com.wucj.service.thread.JoinUseThread - 被插入线程:12,插入线程:13
22:45:01.731 [main] INFO com.wucj.service.thread.JoinUseThread - 被插入线程:13,插入线程:14
22:45:01.731 [main] INFO com.wucj.service.thread.JoinUseThread - 被插入线程:14,插入线程:15
22:45:01.731 [main] INFO com.wucj.service.thread.JoinUseThread - 被插入线程:15,插入线程:16
22:45:01.731 [main] INFO com.wucj.service.thread.JoinUseThread - 被插入线程:16,插入线程:17
22:45:01.731 [main] INFO com.wucj.service.thread.JoinUseThread - 被插入线程:17,插入线程:18
22:45:01.732 [main] INFO com.wucj.service.thread.JoinUseThread - 被插入线程:18,插入线程:19
22:45:01.735 [main] INFO com.wucj.service.thread.JoinUseThread - 线程:main执行完毕...
22:45:01.736 [0] INFO com.wucj.service.thread.JoinUseThread$JumpRunable - 线程:0执行完毕
22:45:01.736 [1] INFO com.wucj.service.thread.JoinUseThread$JumpRunable - 线程:1执行完毕
22:45:01.736 [2] INFO com.wucj.service.thread.JoinUseThread$JumpRunable - 线程:2执行完毕
22:45:01.736 [3] INFO com.wucj.service.thread.JoinUseThread$JumpRunable - 线程:3执行完毕
22:45:01.736 [4] INFO com.wucj.service.thread.JoinUseThread$JumpRunable - 线程:4执行完毕
22:45:01.736 [5] INFO com.wucj.service.thread.JoinUseThread$JumpRunable - 线程:5执行完毕
22:45:01.737 [6] INFO com.wucj.service.thread.JoinUseThread$JumpRunable - 线程:6执行完毕
22:45:01.737 [7] INFO com.wucj.service.thread.JoinUseThread$JumpRunable - 线程:7执行完毕
22:45:01.737 [8] INFO com.wucj.service.thread.JoinUseThread$JumpRunable - 线程:8执行完毕
22:45:01.737 [9] INFO com.wucj.service.thread.JoinUseThread$JumpRunable - 线程:9执行完毕
22:45:01.737 [10] INFO com.wucj.service.thread.JoinUseThread$JumpRunable - 线程:10执行完毕
22:45:01.737 [11] INFO com.wucj.service.thread.JoinUseThread$JumpRunable - 线程:11执行完毕
22:45:01.737 [12] INFO com.wucj.service.thread.JoinUseThread$JumpRunable - 线程:12执行完毕
22:45:01.737 [13] INFO com.wucj.service.thread.JoinUseThread$JumpRunable - 线程:13执行完毕
22:45:01.738 [14] INFO com.wucj.service.thread.JoinUseThread$JumpRunable - 线程:14执行完毕
22:45:01.738 [15] INFO com.wucj.service.thread.JoinUseThread$JumpRunable - 线程:15执行完毕
22:45:01.738 [16] INFO com.wucj.service.thread.JoinUseThread$JumpRunable - 线程:16执行完毕
22:45:01.738 [17] INFO com.wucj.service.thread.JoinUseThread$JumpRunable - 线程:17执行完毕
22:45:01.738 [18] INFO com.wucj.service.thread.JoinUseThread$JumpRunable - 线程:18执行完毕
22:45:01.738 [19] INFO com.wucj.service.thread.JoinUseThread$JumpRunable - 线程:19执行完毕
Disconnected from the target VM, address: '127.0.0.1:53496', transport: 'socket'

Process finished with exit code 0

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值