臨界區表示一種公共資源或共享數據,可以被多個線程使用。但是每一次只能有一個線程使用它。一旦臨界區資源被占用,想使用該資源的其他線程必須等待。
例如,辦公室里的打印機一次只能執行一個任務。當小王和小明同時需要打印文件,如果小王先下發了打印任務,打印機就開始打印小王的文件,小明的文件只能等待小王打印結束后才能打印。這里的打印機就是一個臨界區。
在並發情況下,臨界區是受保護的對象,如果打印機同時執行小王和小明的打印任務,那么打印出來的文件很有可能已損壞,既不是小王想要的,也不是小明想要的。
參考資料
《實戰Java高並發程序設計》 P9
