參考博客: https://blog.csdn.net/guangyinglanshan/article/details/51645053
公司項目近段時間要使用thread, 個人想去了解Thread.sleep和Thread.currentYhread.sleep的不同之處,在這里做一下簡單的記錄.
一、第一種方式是只調用sleep靜態方法;第二種是獲取對象后再調用sleep靜態方法。第二種方式效率要低一些,因為多了一次函數調用,
而且通過對象調用靜態方法也不太符合“靜態”的定義(靜態成員最好通過類名直接訪問),但功能上是一致的。當需要調用非靜態方法時使用第二種方式,
否則直接使用第一種方式。
二、如果線程是通過繼承Thread實現的話這2個方法沒有區別;
如果線程是通過實現Runnable接口來實現的,則不是Thread類,不能直接使用Thread.sleep()
必須使用Thread.currentThread()來得到當前線程的引用才可以調用sleep(),
所以要用Thread.currentThread().sleep()來睡眠。在多線程情況下區別特別明顯。
