多线程中的运行时间计算



在我的代码中:

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 秒用于线程睡眠。所以下一个线程将被执行。因此,发生了上下文切换。

最新更新