java - 使用 sleep 能否保证线程的执行顺序?

标签 java multithreading

下面的代码片段是否保证 t1、T2 和 T3 将按顺序开始执行?

public class ThreadExecDemo {
    public static void main(String[] args) throws InterruptedException {
        Thread t1 = new Thread(new ThreadDemo(),"t1");
        Thread t2 = new Thread(new ThreadDemo(),"t2");
        Thread t3 = new Thread(new ThreadDemo(),"t3");
        t1.start();
        Thread.sleep(5);
        t2.start();
        Thread.sleep(5);
        t3.start();
    }
}

class ThreadDemo implements Runnable {
    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName()+" is running ");
    }
}

最佳答案

简短回答:否。

更长的答案:不。您无法通过 sleep 来可靠地影响线程的调度(您为什么要这样做?)。 当您启动一个线程时,它与任何其他线程(包括主线程)异步运行,并且您无法控制它的调度时间。你也不应该关心。

关于java - 使用 sleep 能否保证线程的执行顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37734909/

相关文章:

c# - 线程问题

java - 如何在 Android 中的 AsyncTask 完成后更新 fragment ?

java - 检测到 JDK 版本 : 1. 6.0-24 不在允许范围内 1.7

java - 如何在 hibernate/jpa 实体中使用 "size"作为字段名?

multithreading - 如何使用 Node.js 创建多线程应用程序,访问 LevelDB?

将基于进程的程序转换为基于线程的版本?

java - 在Java中获取传入输入流的IP

java - Hadoop 与 Spring 抛出 java.lang.AbstractMethodError 异常

java - 如何让当前线程等待另一个线程完成后再继续?

.net - log4net LogicalThreadContext不起作用