join和wait在協調線程上的區別?
1.sleep() 使當前線程(即調用該方法的線程)暫停執行一段時間,讓其他線程有機會繼續執行,但它并不釋放對象鎖。也就是如果有Synchronized同步塊,其他線程仍然不同訪問共享數據。注意該方法要捕獲異常 比如有兩個線程同時執行(沒有Synchronized),一個線程優先級為MAX_PRIORITY,另一個為MIN_PRIORITY,如果沒有Sleep()方法,只有高優先級的線程執行完成后,低優先級的線程才能執行;但當高優先級的線程sleep(5000)后,低優先級就有機會執行了。 總之,sleep()可以使低優先級的線程得到執行的機會,當然也可以讓同優先級、高優先級的線程有執行的機會。 2.join() join()方法使調用該方法的線程在此之前執行完畢,也就是等待調用該方法的線程執行完畢后再往下繼續執行。注意該方法也要捕獲異常。 3.wait() wait方法用于協調多個線程對共享數據的存取,所以必須在Synchronized語句塊內使用wait方法 wait()方法使當前線程暫停執行并釋放對象鎖標志