簡體   English   中英

為什么線程按順序執行?

[英]Why threads are executing sequentially?

Q.1我試圖同時運行兩個線程,但這里是按順序打印值。 例如,它再次打印0然后再打印0然后再打印1.如果線程同時運行,則不應打印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++);
        }
    }
}

x由線程使用的變量是不一樣的x在所述內打印變量main方法。

由於在線程中執行的代碼太短,第一個線程將在第二個線程啟動時完成

此外,通過這個簡單的示例,您的代碼也會受到輸出緩沖區的影響。

如果要查看並發操作,將sleep()方法放在run方法中的某個位置應該會有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM