当前位置:  技术问答>java相关

高手帮忙!JAVA中如何实现C++中析构函数的功能!紧急!!!

    来源: 互联网  发布时间:2015-02-17

    本文导语:  JAVA没有析构函数,但我想在一个对象被DESTROY时做一些操作,如填写日志等,请问该怎么实现?请给出例子,谢谢!!! |     finalize()应该是”Called by the garbage collector“,但何时调用/是...

JAVA没有析构函数,但我想在一个对象被DESTROY时做一些操作,如填写日志等,请问该怎么实现?请给出例子,谢谢!!!

|
    finalize()应该是”Called by the garbage collector“,但何时调用/是否调用/由
    哪个线程来调用是不”保证“的,故最好的方法是自己写自己的close()方法

    如果非要用finalize()的话:
    java.lang.Object:
    protected void finalize() throws Throwable { }

    一般来说是在自己的类中override上述方法,比如:
    public void finalize(){
        super.finalize();   //不要忘了:-)
        //释放资源。。。
    } 

    finalize是比较复杂的,涉及到线程/GC/Exception处理等,有专门的文章讨论,
    下面是javadoc:

    /**
     * Called by the garbage collector on an object when garbage collection
     * determines that there are no more references to the object.
     * A subclass overrides the finalize method to dispose of
     * system resources or to perform other cleanup. 
     * 


     * The general contract of finalize is that it is invoked 
     * if and when the JavaTM virtual 
     * machine has determined that there is no longer any
     * means by which this object can be accessed by any thread that has
     * not yet died, except as a result of an action taken by the
     * finalization of some other object or class which is ready to be
     * finalized. The finalize method may take any action, including
     * making this object available again to other threads; the usual purpose
     * of finalize, however, is to perform cleanup actions before 
     * the object is irrevocably discarded. For example, the finalize method 
     * for an object that represents an input/output connection might perform
     * explicit I/O transactions to break the connection before the object is
     * permanently discarded. 
     * 


     * The finalize method of class Object performs no 
     * special action; it simply returns normally. Subclasses of 
     * Object may override this definition.
     * 


     * The Java programming language does not guarantee which thread will 
     * invoke the finalize method for any given object. It is 
     * guaranteed, however, that the thread that invokes finalize will not 
     * be holding any user-visible synchronization locks when finalize is 
     * invoked. If an uncaught exception is thrown by the finalize method, 
     * the exception is ignored and finalization of that object terminates.
     * 


     * After the finalize method has been invoked for an object, no 
     * further action is taken until the Java virtual machine has again 
     * determined that there is no longer any means by which this object can 
     * be accessed by any thread that has not yet died, including possible
     * actions by other objects or classes which are ready to be finalized, 
     * at which point the object may be discarded.
     * 


     * The finalize method is never invoked more than once by a Java
     * virtual machine for any given object.
     * 


     * Any exception thrown by the finalize method causes 
     * the finalization of this object to be halted, but is otherwise 
     * ignored. 
     *
     * @throws Throwable the Exception raised by this method
     */


|
tanghuan是对的。
gdsean(摇滚java) :tanghuan说的finalize()是Object类的方法,是在类被回收时被垃圾收集程序调用的。try那个是finally。

|
重写finalize()方法即可

|
楼上的方法OK.

|
finalize不行吧,那是try catch{}
块做后续处理的,查查文档

    
 
 

您可能感兴趣的文章:

  • 高手来谈谈:C++写内核的可行性
  • 请问高手在solaris上开发c++程序用什么呀,还是vi么!
  • c++转java 望高手指教
  • 请问哪位高手知道哪里有Linux的Borland C++ Builder下载?
  • 请问高手:sun下如何编译informix的C++,也就是嵌套sql的c++,急呀
  • 被逼无奈,请高手指点这个错误[ ISO C++ forbids declaration of ‘CQueue’ with no type]
  • 高手请进!----如何使一个c++程序开机或者登陆后自动在后台运行
  • 求助高手:C++在Unix下碰到的问题
  • 如何用C、C++解析HTTP请求报文,包括协议头,字符编码,请高手赐教。谢谢。
  • 因为工作原因,从C++转道Java,高手们推荐一些经典书籍
  • JAVA中的引址和C++中的指针有什么区别??高手向教!!
  • 刚接触Linux,关于linux下c++编程的问题,请高手解答,多谢了!
  • linux下的C++怎样学?请高手指路
  • AIX平台下C++链接错误,高手来看看
  • 关于Linux下C++的一个问题,高手们进来看下
  • 请教高手,C++返回类对象引用问题
  • 熟悉C++和Java的高手请务必帮帮忙,我现在要将一种语言的源代码改成另一种
  • 关键词:◆C++类 ◆线程 ◆共享数据 ◆◆◆请有经验的高手帮忙出出主意
  • 菜鸟求助Linux C++高手
  • 请教各位高手,学习JAVA应该具备怎样的知识,我的C++基础不是很好。
  • 高手帮帮忙!vi中如何实现跳转到任意结构体或函数的声明处,包括系统库中声明的函数和数据结构?
  • 高手指点,关于库函数的问题,着急啊
  • 100分请教高手一个bash函数
  • 关于linux内核的ioctl函数,请高手指点一下
  • 请问高手,如何用linux操作系统里的标准c函数获取bios时间,高分!!!!
  • 小弟请教各位高手,在JAVA中通过什么函数能获得Button的标签内容?
  • linux下time函数问题请教高手
  • 请那位高手详细解释一下wait函数的用法和意义?
  • 高手帮解答:数学基本库函数的源码问题.请你吃烤鸭
  • Linux编程 怎么调用另一个文件中的函数 求高手指点!!!
  • 高手请进:请问用response.sendRedirect()函数传递的中文参数如何正确识别?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • webmail问题,请高手帮忙!!!谁会使用IMP 3.0????!!!
  • 高手帮忙解释
  • 那位高手帮忙 100分
  • ★★★在linux下编译pro*c文件,提示"sqlcxt"没有定义,哪位高手帮忙,定赠分!
  • 装linux遇到问题,有高手在线帮忙吗?请发信息给我
  • free BSD ROOT密码丢失。请高手帮忙
  • red hat 9 不能上网了,请高手帮忙
  • 如何获取 文件类型?文件更新日期?多谢高手帮忙!
  • 高手帮忙啊!!!主板内置声卡怎么安装啊!
  • 升级Linux的问题,急!请高手帮忙!
  • 高手帮忙!linux初次安装的问题?
  • 急!高手帮忙!cximage库在Linux下运行使用的问题。
  • 高手帮忙,pkg安装包结束后,如何启动GUI程序?
  • 请高手帮忙
  • 请高手帮忙想个shell脚本
  • 高手帮帮忙,SHELL脚本编程~~~~~~~~~~~~~~~~~~
  • 限制ssh登录,放开sftp登录,怎么办?跪求高手帮帮忙!
  • 不小心远程注销了linux,然后再进去时桌面不见?急!!在线等,高手帮忙啊!
  • 一个linux shell编程求素数问题 高手帮帮忙啊
  • 100分 , 请高手帮忙...,linux网络配制,得解立即结贴
  • 高手,高手,高高手请进!
  • 有熟悉EXIM的高手高手么??
  • to 高手:学java应该怎样一步步学习,从菜鸟到高手.
  • 高分请高手,高手定能解决
  • 请问高手在linux中用什么命令可以做linux的启动盘???在等待高手??
  • 有高手研究Agent++麽?里面有个thread.h,蛮难读的,请高手指点
  • 难道高手区里的人就是高手?
  • 在dos下用bc31挑战高手******开发mssql程序,连接时报link err:undefined symbol GETNOTE in module DBEXTERN?(挑战高手)
  • 真正的linux高手,请看过来,看你符合高手标准不?
  • 难道这没有高手吗?难道这没有乐于助人的高手?(高分酬谢62+50+50)
  • 关于我对linux高手用yum,非高手用源码的理由


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3