请问大家一个问题,现在有一个父类F,里面用ThreadLocal()对象记录了某个资源(比如Connection),然后有很多类extends这个F,其他的类通过实例化F子类来调用F中的方法,现在我想在F对象销毁的时候把ThreadLocal中的资源处理掉,请问应该如何做?

解决方案 »

  1.   

    finalize是虚拟机在垃圾回收时的回调函数,
    事实上虚拟机规范并没有定义虚拟机的垃圾回收行为,
    其是无法预测的,finalize仅仅是作为一个最后的补救
    措施(譬如FileInputStream的使用者没有调用close),
    永远不要依赖虚拟机的行为。另一方面,ThreadLocal在这里也不是保存资源的地方,
    应该保持一个连接池,关于资源池,可以见jakarta-commons,
    我记得有这方面的实现