首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java Thread.sleep() 靜態方法:類調用與對象調用本質相同但會產生警告

     編輯:程式設計綜合問答

Thread.sleep(1000) 與 thread.sleep(1000)(thread 為 Thread 實例)語義完全一致:均調用 Thread.sleep(long) 靜態方法,令當前執行線程休眠。但 IDE 會對實例調用報警告:The static method sleep(long) from the type Thread should be accessed in a static way。

關鍵點

  • sleep 作用於當前線程:無論通過類名還是實例調用,休眠的都是執行該代碼的線程
  • 不可指定休眠其他線程:無 thread.sleep() 讓 thread 對象代表的線程休眠的 API
  • 最佳實踐:始終用 Thread.sleep(),語義清晰、無警告

常見誤區

Thread t = new Thread(() -> { ... });
t.sleep(1000); // 錯誤理解:以為讓 t 線程睡,實際讓主線程睡

正確控制線程休眠

  • 在目標線程 run() 內部調用 Thread.sleep()
  • 使用 TimeUnit.MILLISECONDS.sleep(1000) 可讀性更好
  • 需中斷睡眠:thread.interrupt() 拋出 InterruptedException
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved