通常,一些同时运行的线程需要共享数据。在这种时候,每个线
程就必须要考虑其他与他一起共享数据的线程的状态与行为,否
则的话就不能保证共享数据的一致性,从而也就不能保证程序的
正确性。
在
Java
语言中,引入了
“
对象互斥锁
”
的概念(又称为监视器、管程)来实现不同线程对
共享数据操作的同步。
“
对象互斥锁
”
阻止多个线程
同时访问同一个条件变量。
用
synchronized
来标识的区域或方法即为
“
对象互斥锁
”
锁住的部
分。如果一个程序内有两个或以上的方法使用
synchronized
标志,
则它们在同一个
“
对象互斥锁
”
管理之下。
一般情况下,都使用
synchronized
关键字在方法的层次上实现对共享资源操作的同步,很少使用
volatile
关键字声明共享变量。