使用特殊的实例变量 长度为0的byte数组
private byte [] lock = new byte[0];//特殊的instance变量
private void method(){
synchronized(lock){
//同步代码块
}
}
原因:
零长度的byte数组对象创建比创建别的对象都更经济;在查看编译后的字节码,发现零长度的byte数组对象只需要3条操作码,而创建一个Object lock = new Object(),需要7行操作码