obj 对象,你作为加锁对象,一定要定义为 final 类型,以防止被修改,从而影响加解锁,就是说 锁对象必须是不可变的
private final Object obj = new Object();
Object obj = new Object();
public void printObject(Object obj) {
System.out.println(obj);
}
不知道你这个问题是否已经解决, 如果还没有解决的话:Object类是类层次结构的根类。是对象工具类,它里面的的方法都是用来操作对象的。每个类都使用 Object 作为超类。每个类都继承Object类的方法。
作用:传递任何数据类型的类供使用;
方法:
1.1 getClass();
该方法是final的,返回此 Object 的运行时类。
1.2 hashCode();
返回该对象的哈希码值。默认情况下,该方法会根据对象的地址来计算。
1.3 equals();
比较两个对象是否相等,默认比较的是对象的引用是否相同。实际上都会重写该方法去比较属性等。
1.4 clone();
方法是protect类型,实现对象的浅复制,只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportedException异常。
深浅克隆的区别就是对于克隆对象中的非静态引用类型的处理: 浅克隆不会新增引用对象, 而深克隆则会连引用对象都会克隆一份;
1.5 toString();
返回该对象的字符串表示,该字符串内容就是对象类型+@+内存地址值,该方法一般都会被重写。