getClasss方法返回的类对象是static synchronized方法锁定
clone方法跑出CloneNotSupportedException
x.clone() != x
x.clone().getClass() == x.getClass()
x.clone.equals(x)
数组默认实现Cloneable接口,当clone返回的数组内部为空
notify唤醒线程,与其他线程竞争
wait使线程休眠,唤醒有4种方式:
1、其他线程调用notify,恰好被唤醒。
2、其他线程调用notifyAll
3、其他线程interrupt线程
4、wait时间已到
finalize() throws Throwable
当垃圾收集确定不再有该对象的引用,垃圾收集器在对象上调用该对象。
finalize是Object的方法,子类可以覆盖这个方法来做一些系统资源的释放或数据的清理。
可以在finalize()让这个对象再次被引用 ,避免被GC回收;最常用的目的是做cleanup
不保证这个finalize()一定被执行,当保证调用finalize线程没有持有任何user-visible同步锁
在finalize里面抛出异常会被忽略,同时方法终止。
finalize被调用后,JVM会再一次检测这个对象是否被存活线程访问,不是就清除。finalize只能被调用一次,覆盖了finalize方法对象须两个GC周期才被清除