为什么线程按顺序执行?

时间:2018-01-15 07:34:03

标签: java multithreading java-threads

Q.1我试图同时运行两个线程,但是这里是按顺序打印值。例如,它打印0然后再次打印0然后再打印1.如果线程同时运行,则不应打印为0 0然后打印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++);
        }
    }
}

2 个答案:

答案 0 :(得分:3)

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

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

此外,通过这个简单的示例,您的代码也会受到输出缓冲区的影响。

答案 1 :(得分:0)

如果要查看并发操作,将sleep()方法放在run方法的某个位置应该会有所帮助。