簡體   English   中英

多線程運行時計算

[英]Running time calculation in multi threading

在我的代碼中:

public class thread1 implements Runnable {

public static void main(String[] args) {
    thread1 d = new thread1();
    new Thread(d).start();
    Thread t1 = new Thread(d);
    t1.start();
}

@Override
public void run() {
    for (int i = 0; i < 3; i++) {
        sleep1();
        sleep2();
    }
}

void sleep1() {
    try {
        Thread.sleep(1000);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

synchronized void sleep2() {
    try {
        Thread.sleep(1000);
    } catch (Exception e) {
        e.printStackTrace();
    }
  }
}

我運行了我的代碼並計算了它的運行時間。

完成的最短時間是7秒。

為什么?

它應該是6秒,因為3loops * 2seconds = 6seconds

因為上下文切換。 sleep()不是保證的時間量,但受系統中其他事情的影響。 它會嘗試回來,但可能不會成功。 此外,可能在您的IDE中舍入。

程序運行時間也要負責。 你有6秒的線程睡眠。 所以下一個線程將被執行。 因此發生了上下文切換。

暫無
暫無

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

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