四种方式 sychronized关键字
sychronized method(){}
sychronized (objectReference) {/*block*/}
static synchronized method(){}
sychronized(classnameclass)
其中和是代表锁当前对象即一个对象就一个锁和代表锁这个类即这个类的锁
要注意的是sychronized method()不是锁这个函数而是锁对象即如果这个类中有两个方法都是sychronized那么只要有两个线程共享一个该类的reference每个调用这两个方法之一不管是否同一个方法都会用这个对象锁进行同步锁类的和类推即该类的不同reference调用了sychronized区段的咚咚就会受类锁的控制
还有如果两个函数调用的先后顺序不能被打断那么可以有个专门的锁对象来完成这个任务
class MyLock
{
synchronized getLock()
{
//####还没写完
}
}
五个等级 参见effective java Item : Document thread safety
[] []