现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行?

来源:互联网 发布:企业网络建设方案 编辑:程序博客网 时间:2024/05/21 06:53

使用join()方法

public class TestJoin{    public static void main(String[] args)    {        Thread t1 = new Thread(new T1(), "线程1");        Thread t2 = new Thread(new T2(), "线程2");        Thread t3 = new Thread(new T3(), "线程3");                try        {            //t1先启动            t1.start();            t1.join();            //t2            t2.start();            t2.join();            //t3            t3.start();            t3.join();        }        catch (InterruptedException e)        {            e.printStackTrace();        }    }}class T1 implements Runnable{        @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();            }        }    }}class T2 implements Runnable{        @Override    public void run()    {        for (int j = 5; j < 10; j++)        {            System.out.println(Thread.currentThread().getName()+": "+j);            try            {                Thread.sleep(100);            }            catch (InterruptedException e)            {                e.printStackTrace();            }        }    }}class T3 implements Runnable{    @Override    public void run()    {        for (int i = 10; i < 15; 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();    }}


转自:http://www.cnblogs.com/yzlpersonal/p/5231681.html

0 0
原创粉丝点击