zoukankan      html  css  js  c++  java
  • 现在有T1、T2、T3三个线程,怎样保证T2在T1执行完后执行,T3在T2执行完后执行?使用Join

    public class TestJoin
    {
        public static void main(String[] args)
        {
            Thread t1 = new MyThread("线程1");
            Thread t2 = new MyThread("线程2");
            Thread t3 = new MyThread("线程3");
            
            try
            {
                //t1先启动
                t1.start();
                t1.join();
                //t2
                t2.start();
                t2.join();
                //t3
                t3.start();
                t3.join();
            }
            catch (InterruptedException e)
            {
                e.printStackTrace();
            }
        }
    }
    
    class MyThread extend Thread{
        public MyThread(String name){
    setName(name);
    } @Override
    public void run() { for (int i = 0; i < 5; i++) { System.out.println(Thread.currentThread().getName()+": "+i); try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } } } }

    还有一种方式,在t3开始前join t2,在t2开始前join t1

    public class TestJoin2
    {
        public static void main(String[] args)
        {
            final Thread t1 = new Thread(new Runnable() {
    
                @Override
                public void run() {
                    System.out.println("t1");
                }
            });
            final Thread t2 = new Thread(new Runnable() {
    
                @Override
                public void run() {
                    try {
                        //引用t1线程,等待t1线程执行完
                        t1.join();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    System.out.println("t2");
                }
            });
            Thread t3 = new Thread(new Runnable() {
    
                @Override
                public void run() {
                    try {
                        //引用t2线程,等待t2线程执行完
                        t2.join();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    System.out.println("t3");
                }
            });
            t3.start();
            t2.start();
            t1.start();
        }
    }
    逃避不一定躲得过,面对不一定最难过
  • 相关阅读:
    [Effective C++ --012]复制对象时勿忘其每一个成分
    [016]转--C++拷贝构造函数详解
    Oracle给用户权限
    Oracle清屏方法
    Oracle 创建数据库、表用户及权限设置代码
    第三人称角色移动及自由移动视野(RigidBody实现)
    unity3D延迟函数
    第一人称角色移动及自由移动视野(CharacterController实现)
    u3d场景载入
    u3D自动寻路2
  • 原文地址:https://www.cnblogs.com/yangzhenlong/p/5231681.html
Copyright © 2011-2022 走看看