Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.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 - Fatal编程技术网

为什么我的多线程Java代码不提供顺序输出?

为什么我的多线程Java代码不提供顺序输出?,java,multithreading,Java,Multithreading,我最近开始学习多线程。我尝试了以下代码: class AThread extends Thread { int input; public AThread(int y) { input=y; } public void compute() { System.out.println(input*input); } public void run() { compute(); } } pu

我最近开始学习多线程。我尝试了以下代码:

class AThread extends Thread {
    int input;

    public AThread(int y) {
        input=y;
    }

    public void compute() {
        System.out.println(input*input);
    }

    public void run() {
        compute();
    }
}

public class ThreadDemo {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        AThread a=new AThread(1);
        AThread b=new AThread(2);
        AThread c=new AThread(3);
        a.start();
        b.start();
        c.start();
    }
}
输出

有时我会

4
1
9
但其他时候

1
9
4

为什么会发生这种情况?我还是个新手。请用我的标准回答。

因为这就是多线程的含义:并行处理;除非手动同步,否则未指定线程的相对顺序


它在你的书中。

因为多线程就是这样的:并行地做事情;除非手动同步,否则未指定线程的相对顺序


它在你的书中。

你一次做了很多事情。除非您手动同步,否则CPU执行的顺序是未指定的。

您正在同时执行多个操作。除非您手动同步,否则CPU执行的顺序是不确定的。

当您创建新线程并启动它们时,执行顺序取决于JVM Java虚拟机—所有Java程序运行的环境。这类似于操作系统层的分叉过程。您放弃了对顺序处理的任何控制,作业调度器允许各种线程/进程在其认为合适的情况下占用CPU时间。

当您创建新线程并启动它们时,您将执行顺序留给JVM Java虚拟机—所有Java程序运行的环境。这类似于操作系统层的分叉过程。您放弃了对顺序处理的任何控制,作业调度程序允许各种线程/进程在其认为合适的情况下占用CPU时间。

如果它们是顺序执行的,那么线程是干什么用的?如果它们是顺序执行的,那么线程是用来做什么的呢?我要补充的唯一一件事是你并行地打错了字:我要补充的唯一一件事是你并行地打错了字: