需求:線程暫停(時間未知),稍後在程式其他處喚醒。
使用 `Object` 內建監視器鎖:
// 共用鎖物件
final Object lock = new Object();
// 消費者線程:資料不可用時等待
synchronized(lock) {
while (!dataReady) {
lock.wait(); // 釋放鎖並阻塞
}
// 被喚醒後繼續處理
process(data);
}
// 生產者線程:資料準備好後通知
synchronized(lock) {
data = produce();
dataReady = true;
lock.notifyAll(); // 喚醒所有等待線程
}