zoukankan      html  css  js  c++  java
  • Effective Java 英文 第二版 读书笔记 Item 7:Avoid finalizers

    Finalizers are unpredictable,often dangerous,and generally unnecessary.

    Their use can cause erratic behavior,poor performance,and portability problems.

    Finalizers have a few valid uses,which we’ll cover later in this item,but as a rule of thumb,you should avoid finalizers.

    C++ programmers are cautioned not to think of finalizers as Java’s analog of C++ destructors.In C++,destructors are the normal way to reclaim the resources associated with an object,a necessary counterpart to constructors.In java,the garbage collector reclaims the storage associated with an object when it becomes unreachable,requiring no special effort on the part of the programmer.C++ destructors are also used to reclaim other nonmemory resources.In java,the try-finally block is generally used for this purpose.

    //try-finally block guarantees execution of termination method
    Foo foo=new Foo();
    Try{
        //Do what must be done wit foo
    }finally{
    //Provide an explicit termination method.
        foo.terminate(); //Explicit termination method
    }

    Explicit termination methods are typically used in combination with the try-finally construct to ensure termination.

    But the finalizer should log a warning if it finds that the resource has not been terminated.

    //Finalizer Guardian idiom
    Public class Foo{
        //Sole purpose of this object is to finalize outer Foo object 
        Private final Object finalizerGuardian=new Object(){
            Protected ovid finalize thros Throwable{
        ……// Finalize outer Foo object
    }
    };
        //remainder omitted
    }
  • 相关阅读:
    mybatis几种开发方式
    SpringData,JPA,MongoDB,Solr,Elasticsearch底层逻辑关系
    简论远程通信(RPC,Webservice,RMI,JMS的区别)
    spring/spring boot/spring mvc中用到的注解
    Centos常用命名
    Mybatis详解
    Java成长之路
    Hibernate 与Mybatis之比较
    Struts2 与SpringMVC之比较
    Maven 配置文件详解
  • 原文地址:https://www.cnblogs.com/linkarl/p/4820388.html
Copyright © 2011-2022 走看看