轉載原文:https://blog.csdn.net/lz710117239/article/details/79288605
轉載作者:lz710117239
一直對sleep與wait除了使用方法上的卻別外,還對它們是否會佔用cpu時間產生了疑惑,故此做了個實驗如下:
上圖中是什麼代碼都沒有執行的時候的cpu利用率,下面我們執行這段代碼:
public static void main(String[] args) {
for (int i = 0; i < 10000000; i++) {
System.out.println("dfdf");
System.out.println(456 + 567);
}
}
可以看出cpu的利用率飆升到了65%,這時候cpu佔用率已經很高了。
下面我們測試sleep的情況:
public static void main(String[] args) {
for (int i = 0; i < 10000000; i++) {
try {
Thread.sleep(100000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
上圖可見cpu的利用率還是在7%左右,由此可以證明sleep方法並不會佔用cpu的時間
下面我們測試wait方法:
public static void main(String[] args) {
for (int i = 0; i < 10000000; i++) {
Object o = new Object();
synchronized (o) {
try {
o.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
我們可以看到cpu的利用率還是維持在6%左右的,由此得出結論sleep()與wait()方法都不佔用cpu時間及利用率
原作者信息:
作者:lz710117239
來源:CSDN
原文:https://blog.csdn.net/lz710117239/article/details/79288605