如何保证线程按顺序执行

Thread类构造方法:
1.Thread();
2.Thread(String name);
3.Thread(Runable r);
4.Thread(Runable r, String name);

thread类常用方法:
start();//启动线程
getId();//获得线程ID
getName();//获得线程名字
getPriority();//获得优先权
isAlive();//判断线程是否活动
isDaemon();//判断是否守护线程
getState();//获得线程状态
sleep(long mill);//休眠线程
join();//等待线程结束
yield();//放弃cpu使用权利
interrupt();//中断线程
currentThread();//获得正在执行的线程对象

下面实例用join()实现线程按顺序执行:

/*
 有三个线程T1 T2 T3,如何保证他们按顺序执行-转载
在T2的run中,调用t1.join,让t1执行完成后再让T2执行
在T2的run中,调用t2.join,让t2执行完成后再让T3执行
*/
public class ThreadByOrder {

    static Thread t1 = new Thread(new Runnable() {

        @Override
        public void run() {
            System.out.println("t1");
        }
    });

    static Thread t2 = new Thread(new Runnable() {

        @Override
        public void run() {
            try {
                t1.join();
                Thread.sleep(500);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            System.out.println("t2");
        }
    });

    static Thread t3 = new Thread(new Runnable() {

        @Override
        public void run() {
            try {
                t2.join();
                Thread.sleep(500);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            System.out.println("t3");
        }
    });
    public static void main(String[] args) {
        t1.start();
        t2.start();
        t3.start();

    }

}

执行结果:

时间: 2024-12-29 06:09:48

如何保证线程按顺序执行的相关文章

C#之使用AutoResetEvent实现线程的顺序执行

前几天一朋友问我如何实现线程的顺序执行,说真的,虽然看过CLR这本书,也把线程部分拜读了两遍,但是这个问题出来之后还是没有一个思路.今天在搜索资料的时候无意中再次看到AutoResetEvent这个东西,当然我知道它是和线程有关,用于处理线程切换之类的(可能在测试Demo之前理解有误),于是决定用AutoResetEvent来处理上面的问题. 这里以园区一个园友的例子来说明,这个例子就是 买书-->付款-->拿书这个过程,该过程会持续n(通过变量设置)次,并且每一次都要按照顺序执行,有可能有同

让线程按顺序执行8种方法

实现我们下面需要完成这样一个应用场景: 1.早上:2.测试人员.产品经理.开发人员陆续的来公司上班:3.产品经理规划新需求:4.开发人员开发新需求功能:5.测试人员测试新功能. 规划需求,开发需求新功能,测试新功能是一个有顺序的,我们把thread1看做产品经理,thread2看做开发人员,thread3看做测试人员. 1.使用线程的join方法 join():是Theard的方法,作用是调用线程需等待该join()线程执行完成后,才能继续用下运行. 如果想学习Java工程化.高性能及分布式.深

有三个线程T1 T2 T3,如何保证他们按顺序执行-转载

T3先执行,在T3的run中,调用t2.join,让t2执行完成后再执行t3 在T2的run中,调用t1.join,让t1执行完成后再让T2执行 public class Test { // 1.现在有T1.T2.T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行 public static void main(String[] args) { final Thread t1 = new Thread(new Runnable() { @Override public voi

多个线程实现顺序打印数据,(可自定义线程一次打印数量和总数量)

最近看到一道面试题:让3个线程顺序打印数字,如线程1打印1-5,线程2打印6-10,线程3打印11-15,然后是线程1打印16-20...一直打印到75结束. 这到题主要问题有两点: 第一点是不能让线程打印的过程中出现其他线程 第二点是要实现线程进入的过程是有序的,如上123123..这样. 我先是把基本的功能实现了,后来发现可以改造一下,做成可扩展的,即每次打印的数量可自定义,总的数量可自定义,并且保证线程的顺序是有序的,下面是具体代码: PrintQueue.java 文件,同步线程,控制打

如何保证线程的执行顺序

示例代码 static Thread t1 = new Thread(new Runnable() { public void run() { System.out.println("Thread1"); } }); static Thread t2 = new Thread(new Runnable() { public void run() { System.out.println("Thread2"); } }); static Thread t3 = new

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

考察join /**  * 现有T1.T2.T3三个线程,你怎样保证T2在T1执行完成之后执行,T3在T2执行完后执行?  * @author user  *  */ public class Test3 { public static void main(String[] args) throws InterruptedException { Thread T1 = new Thread(new T1()); Thread T2 = new Thread(new T2()); Thread T

Java中线程顺序执行

现有线程threadone.threadtwo和threadthree,想要的运行顺序为threadone->threadtwo->threadthree,应该如何处理?这里需要用到一个简单的线程方法join(). join()方法的说明:join方法挂起当前调用线程,直到被调用线程完成后在继续执行(join() method suspends the execution of the calling thread until the object called finishes its ex

Java 线程同步执行(顺序执行)

关于线程,有两种实现方法, 一种是通过继承Runnable接口,另外一种通过扩展Thread类,两者的具体差别,可参考我找的这篇文章 http://www.cnblogs.com/rollenholt/archive/2011/08/28/2156357.html .本主主要是讲 线程的同步执行问题.. 如果程序是通过扩展Thread类的,网上的资料说可以通过 join()函数实现,但本人亲测,此法无法通过.程序如下: public class test1 extends Thread { pu

有三个线程,怎么让他们按顺序执行?

场景:有三个线程t1.t2.t3.确保三个线程t1执行完后t2执行,t2执行完成后t3执行. 方法1:thread.Join把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程.比如在线程B中调用了线程A的Join()方法,直到线程A执行完毕后,才会继续执行线程B. package com.gs.demo1; public class ThreadTest1 { public static void main(String[] args) { Thread t1 = new