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();
        }
    }
    逃避不一定躲得过,面对不一定最难过
  • 相关阅读:
    mac系统下 Homebrew 使用
    mac上安装nginx
    DOMContentLoaded 和 Load 事件 区别(待补充)
    JavaScript运行机制
    理解js事件循环(event loop)
    理解js闭包
    nginx 知识点
    014_mac下的端口查看
    003_如何正确的进入容器
    002_docker构建zookeeper环境
  • 原文地址:https://www.cnblogs.com/yangzhenlong/p/5231681.html
Copyright © 2011-2022 走看看