我之见--线程合并

       今天我们主要来学习线程合并(join); 为什么要合并呢?如果一个线程长期占用Cpu一直不肯释放,如果这个时候我们又想执行另外一个线程,我们可以要执行的线程合并到当前的线程。ps:线程A 一直占用Cpu,这里需要执行B线程,我们可以调用 B.join, 把B线程合并到A线程中执行,如果A在执行期间联合B线程,那么线程A将立刻中断执行,一直等到线程B执行完毕。

    

package javaThread;

public class JoinThread {

    public static void main(String[] args) {
        
        
        System.out.println(" main name begint" );
        
        Thread t = new MyThread("test 11");
        t.start();           
        
        MyThread t2 = new MyThread(" test 22",t);
        t2.start();
        try {
            t2.join();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        
        System.out.println(" main name end" );
        
        
    }

    static class MyThread extends Thread {
        private String mName;
        private Thread mThread;

        public MyThread(String name) {
            mName = name;
        }
        
        public MyThread(String name,Thread thread) {
            mName = name;
            mThread = thread;
        }
        
        @Override
        public void run() {
            super.run();
            
            System.out.println(" start run " + mName);
            try {
                if(mThread != null) {
                    mThread.join();
                }
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            int i = 0;
            while (i<2000) {
                System.out.println(" start run " + mName + " " + i);
                i++;
            }
        }
    }

}
我们来看上面的例子,主线程被t2合并,所以主线程要等待t2执行完,而t2又被t1 合并 ,所以t2也要等待t1执行完。所以输出如下:

 main name begint
 start run  test 22
 start run test 11
 start run test 11 0
 start run test 11 1
 start run test 11 2
 start run test 11 3
 start run test 11 4
 ............
 start run  test 22 0
 start run  test 22 1
 start run  test 22 2
 start run  test 22 3
 start run  test 22 4
 start run  test 22 5
 .............
 start 
 main name end


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值