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

    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();
    }
    

    }

  • 相关阅读:
    LINUX超级用户(权限)在系统管理中的作用
    LINUX对超级用户和普通用户的理解
    LINUX设置SUID,SGID,Stick bit
    LINUX文件权限
    LINUX文件类型
    LINUX查询用户命令
    LINUX用户身份切换
    ACL权限设置
    Linux用户密码策略
    linux库列表
  • 原文地址:https://www.cnblogs.com/zhuyeshen/p/11005221.html
Copyright © 2011-2022 走看看