線程間的通信:
其實就是多個線程再操作同一個資源,但是操作的動作不同
當某個線程進入synchronized塊后,共享數據的狀態不一定滿足該線程的需要,需要其他線程改變共享數據的狀態后才能運行,而由於當時線程對共享資源時獨占的,它必須解除對共享資源的鎖定的狀態,通知其他線程可以使用該共享資源。
Java中的 wait(),notify(),notifyAll()可以實現線程間的通信。
生產者--消費者問題是典型的線程同步和通信問題
/**
* 生產者和消費者問題,生產者生成出產品,消費者去購買產品
* 在這里創建三個線程,一個主控線程,一個生產者線程,一個消費者線程,
* 另外,創建一個堆棧 Stack,生成線程生成的產品放置到堆棧中,然后消費者線程再堆棧中去走產品
* */
建立一個堆棧 代碼如下:
創建一個生產者類 代碼如下:
創建一個消費者類 代碼如下:
主函數調用 代碼如下: