一、前言
對于并發(fā)編程而言,除了Thread以外,對Object對象的wati和notify對象也應該深入了解其用法,雖然知識點不多。
二、線程安全基本知識
首先應該記住以下基本點,先背下來也無妨:
同一時間一個鎖只能被一個線程持有
調(diào)用對象的wait()和notify()前必須持有它
三、wait()和notify()理解
3.1 wait()和notify()方法簡介
wait()和notify()都是Object的方法,可以認為任意一個Object都是一種資源(或者資源的一個代表),當多個線程對一個資源進行操作時,如果線程發(fā)現(xiàn)這個資源還沒有準備好,它就可以在這個資源上進行等待,即調(diào)用這個資源的wait()方法,如果有另外的線程經(jīng)過某些處理覺得這個資源可用了,會調(diào)用這個這個資源的notify()方法,告訴等待它的線程,這個資源可以用了。
當然不使用wait()和notify()方法也是可以的,可以用while()死循環(huán)來判斷,如下面的偽代碼:
class Resource{ static boolean canUse=false; }while(!Resource.canUse){ //如果不可用,死循環(huán)在這里等待}//當資源可以使用后,就會跳出循環(huán),往下執(zhí)行