❶ 關於java中線程(Thread)問題
1.sleep()
使當前線程(即調用該方法的線程)暫停執行一段時間,讓其他線程有機會繼續執行,但它並不釋放對象鎖。也就是如果有Synchronized同步塊,其他線程仍然不同訪問共享數據。注意該方法要捕獲異常
比如有兩個線程同時執行(沒有Synchronized),一個線程優先順序為MAX_PRIORITY,另一個為MIN_PRIORITY,如果沒有Sleep()方法,只有高優先順序的線程執行完成後,低優先順序的線程才能執行;但當高優先順序的線程sleep(5000)後,低優先順序就有機會執行了。
總之,sleep()可以使低優先順序的線程得到執行的機會,當然也可以讓同優先順序、高優先順序的線程有執行的機會。
2.join()
join()方法使調用該方法的線程在此之前執行完畢,也就是等待調用該方法的線程執行完畢後再往下繼續執行。注意該方法也要捕獲異常。
3.wait()
wait方法用於協調多個線程對共享數據的存取,所以必須在Synchronized語句塊內使用wait方法
wait()方法使當前線程暫停執行並釋放對象鎖標志
參考資料:http://gatusso52.javaeye.com/blog/483973
❷ JAVA中這個Thread.currentThread是什麼意思
返回對當前正在執行的線程對象的引用。
簡單來說就是 Tthread類(線程類) 中的一個方法 Thread.currentThread() 是指獲取當前運行的線程對象 例如:
Thread.currentThread().getName() 就是獲取當前運行的線程的名稱 簡單來說這就差不多了