[英]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.