为什么线程是顺序执行的?

Why threads are executing sequentially?

Q.1 我试图同时 运行 两个线程,但这里它是按顺序打印值。例如,它正在打印 0 然后 1 再 0 然后 1。如果线程并发 运行ning 那么它不应该像 0 0 然后 1 1.

一样打印

Q.2 输出 10、11,然后是 0、1、0、1。当它先打印 10 和 11 时。是不是表示程序控制先到t1.start()t2.start(),线程t1和t2还没有启动。

public class Main implements Runnable
{
    int x;

    public void run()
    {
        for(int i = 0; i < 2; i++)
        {
            System.out.println(x++);
        }
    }

    public static void main(String[] args)
    {
        Thread t1 = new Thread(new Main());

        Thread t2 = new Thread(new Main());

        t1.start();
        t2.start();

        int y = 10;
        for(int i = 0; i < 2; i++)
        {
            System.out.println(y++);
        }
    }
}

Threads 使用的 x 变量与 main 方法中打印的 x 变量不同。

由于线程中执行的代码非常短,第一个线程将在第二个线程启动时完成

对于这个简单的示例,您的代码也会受到输出缓冲区的影响。

如果您想查看并发操作,将 sleep() 方法放在 运行 方法中的某处应该会有所帮助。