Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我有两个线程如何知道它们是否同时运行?_Java_Multithreading_Concurrency - Fatal编程技术网

Java 我有两个线程如何知道它们是否同时运行?

Java 我有两个线程如何知道它们是否同时运行?,java,multithreading,concurrency,Java,Multithreading,Concurrency,我正在尝试创建两个并发运行的线程。如何测试它们是否并发运行,以及在当前线程结束后线程是否在输出中运行?这是在发生还是你在同时跑步 public class Start { public static void main(String[] args) { new ThreadOne(); Thread t = Thread.currentThread(); // Static Method t.setName("Thread One"); System.out.p

我正在尝试创建两个并发运行的线程。如何测试它们是否并发运行,以及在当前线程结束后线程是否在输出中运行?这是在发生还是你在同时跑步

public class Start {

public static void main(String[] args) {
    new ThreadOne();
    Thread t = Thread.currentThread(); // Static Method
    t.setName("Thread One");
    System.out.println(t);

        for(int i = 0; i<=100; i++) {
            System.out.println("Main Thread: " + i);
        }

    }

}

public class ThreadOne implements Runnable {
Thread t;
public ThreadOne() {
    t =new Thread(this, "Demo Thread");
    System.out.println("Child Thread" + t);
    t.start();
}
@Override
public void run() {
    for(int i = 0; i<=100; i++) {

            System.out.println("Child Thread: " + i);

    }

}

}

看起来是这样的,因为第一个线程的输出非常快,以至于secound还没有启动。如果您在for循环中进行10000次迭代,或者添加一个
Thread.sleep(1000)看起来是这样的,因为第一个线程的输出非常快,以至于secound还没有启动。如果您在for循环中进行10000次迭代,或者添加一个
Thread.sleep(1000)看起来是这样的,因为第一个线程的输出非常快,以至于secound还没有启动。如果您在for循环中进行10000次迭代,或者添加一个
Thread.sleep(1000)看起来是这样的,因为第一个线程的输出非常快,以至于secound还没有启动。如果您在for循环中进行10000次迭代,或者添加一个
Thread.sleep(1000)在java文件夹的bin中有一个应用程序(对于Windows平台)。执行该命令,您将能够监视线程。

在java文件夹的bin中有一个应用程序(对于Windows平台)。执行该命令,您将能够监视线程。

在java文件夹的bin中有一个应用程序(对于Windows平台)。执行该命令,您将能够监视线程。

在java文件夹的bin中有一个应用程序(对于Windows平台)。执行该命令,您将能够监视线程。

它们同时运行。我已经试过这个代码了,确实如此。我认为你应该看到更多的产出。你给我们看的输出只打印了十次。它不能说实话。您可以将100更改为1000,然后您将发现真相。

它们同时运行。我已经试过这个代码了,确实如此。我认为你应该看到更多的产出。你给我们看的输出只打印了十次。它不能说实话。您可以将100更改为1000,然后您将发现真相。

它们同时运行。我已经试过这个代码了,确实如此。我认为你应该看到更多的产出。你给我们看的输出只打印了十次。它不能说实话。您可以将100更改为1000,然后您将发现真相。

它们同时运行。我已经试过这个代码了,确实如此。我认为你应该看到更多的产出。你给我们看的输出只打印了十次。它不能说实话。您可以将100更改为1000,然后您将发现真相。

在这种情况下,看起来主线程在子线程开始之前完成。您所编写的代码中没有任何内容需要同时或交叉执行两个线程


你更广泛的问题很有趣

我正在尝试创建两个并发运行的线程如何测试它们是否并发运行

实际上,我认为不可能最终测试或证明应用程序中的两个线程是否同时运行。据我所知,任何外部可观察到的执行模式都可以由线程同时执行(字面上)产生,理论上也可以由时间切片的线程产生。。。在单核系统上


实际上,时间切片的粒度是这样的,您通常可以看到行为上的差异。但我认为你需要在个案的基础上评估现有的证据。。。与特定应用程序的代码结合使用。

在本例中,看起来主线程在子线程启动之前完成。您所编写的代码中没有任何内容需要同时或交叉执行两个线程


你更广泛的问题很有趣

我正在尝试创建两个并发运行的线程如何测试它们是否并发运行

实际上,我认为不可能最终测试或证明应用程序中的两个线程是否同时运行。据我所知,任何外部可观察到的执行模式都可以由线程同时执行(字面上)产生,理论上也可以由时间切片的线程产生。。。在单核系统上


实际上,时间切片的粒度是这样的,您通常可以看到行为上的差异。但我认为你需要在个案的基础上评估现有的证据。。。与特定应用程序的代码结合使用。

在本例中,看起来主线程在子线程启动之前完成。您所编写的代码中没有任何内容需要同时或交叉执行两个线程


你更广泛的问题很有趣

我正在尝试创建两个并发运行的线程如何测试它们是否并发运行

实际上,我认为不可能最终测试或证明应用程序中的两个线程是否同时运行。据我所知,任何外部可观察到的执行模式都可以由线程同时执行(字面上)产生,理论上也可以由时间切片的线程产生。。。在单核系统上

实际上,时间切片的粒度是这样的,您通常可以看到行为上的差异。但我认为你需要根据具体情况评估现有证据
Main Thread: 0
Main Thread: 1
Main Thread: 2
Main Thread: 3
Main Thread: 4
Main Thread: 5
Main Thread: 6
Main Thread: 7
Main Thread: 8
Main Thread: 9
Main Thread: 10

Child Thread: 0
Child Thread: 1
Child Thread: 2
Child Thread: 3
Child Thread: 4
Child Thread: 5
Child Thread: 6
Child Thread: 7
Child Thread: 8
Child Thread: 9
Child Thread: 10