java中有关 终结条件 的 问题 也就是finalize

问题描述

packagenet.mindview.util;classBook{booleancheckedout=false;Book(booleancheckout){checkedout=checkout;}voidcheckIn(){checkedout=false;}protectedvoidfinalize(){if(checkedout)System.out.println("error:checkout");}}publicclasswushu{publicstaticvoidmain(String[]args){Booknovel=newBook(true);novel.checkIn();newBook(true);System.gc();}}这个题的运行机制是什么怎么最后得到结果error:checkout我听有人说Debug下能查看java程序的运行机制那在myeclipse中怎么用debug查找程序的运行机制

解决方案

解决方案二:
如果类定义了finalize方法,java垃圾收集器在收集垃圾该对象的时候会且仅会调用该方法一次,也就是说这个方法是jvm自动调用的如果在该方法的finalize方法中复活了该对象,在下次垃圾收集该对象的时候不会再调用该对象的finalize方法
解决方案三:
引用楼主myheartwillon的回复:

packagenet.mindview.util;classBook{booleancheckedout=false;Book(booleancheckout){checkedout=checkout;}voidcheckIn(){checkedout=false;}protectedvoidfinalize(){if(checkedout……

加个断点debug模式运行
解决方案四:
如果类定义了finalize方法,java垃圾收集器在收集垃圾该对象的时候会且仅会调用该方法一次,也就是说这个方法是jvm自动调用的如果在该方法的finalize方法中复活了该对象,在下次垃圾收集该对象的时候不会再调用该对象的finalize方法
解决方案五:
JAVA的垃圾收集器会自动检查到未被引用的对象,调用其finalize方法并将其标记为finalized,所以finalize就相当与C++的析构函数.第二次做垃圾收集时,如果标记了finalized的对象无引用则将其删除并释放空间.也就是如果在finalize方法里重新赋予其引用它就不会被删除.至于为什么会有这样的机制我也没完全理解.
解决方案六:
finalize方法不可靠,不要用。

时间: 2024-10-25 22:44:43

java中有关 终结条件 的 问题 也就是finalize的相关文章

java中如何满足一个条件使按钮失效

问题描述 java中如何满足一个条件使按钮失效 我想达到这样的效果,比如点击了一个下拉列表,选中了特定的条件之后,会使下面的某一个按钮失效.该怎么做呢? 解决方案 JS或者JQuery添加onchange事件,每次下拉列表选中值改变的时候触发,判定一下如果选中了某个条件,然后用JS或JQuery给按钮添加样式,使其只读. $('#mySelect').change(function(){ var p1=$(this).children('option:selected').val();//这就是

请教各位高手双色球的过滤条件中的匹配条件咋用java编写?

问题描述 请教各位高手双色球的过滤条件中的匹配条件咋用java编写? # 请教各位高手双色球的过滤条件中的匹配条件咋用java编写? 解决方案 这个不是过滤条件,谢谢你了 解决方案二: http://wenku.baidu.com/link?url=5v2AEp41c99sFSK5MQrGttwdjsLcGXb3mg7yBirtl3J4ynjLWys6fODKwAHBfzxhqtotUddlvR726ysai9iLEfKrRjMPaFK4bV8ddeC03q_ 解决方案三: http://www

java中单例模式需要满足什么条件。有几种实现方法,常用的。

问题描述 java中单例模式需要满足什么条件.有几种实现方法,常用的. 新手刚接触单例模式,脑子还没形成概念,书上就两页,网上太多看的模糊,还是来问问高手吧.多谢了 解决方案 所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法.如果我们要让类在一个虚拟机中只能产生一个对象,我们首先必须将类的构造方法的访问权限设置为private,这样,就不能用new操作符在类的外部产生类的对象了,但在类内部仍可以产生该类的对象.因

java中如何保存检索条件

问题描述 java中如何保存检索条件 java中如何实现保存检索条件,只有点击检索按钮才会去改变保存检索条件,其他情况下(下一页,上一页,新增返回后检索,和修改返回后检索)都是用之前保存好的检索的条件查询 解决方案 取得条件,在每一步操作都传递给它,不就完了! 解决方案二: 将你检索的条件设为参数然后相互之间传递,用的时候拿出来用就行了 解决方案三: 刷新前在js中保存检索条件,刷新后将保存的检索条件赋值给检索部分就行了. 检索前将检索条件保存起来: var jiansuo = $("#a&qu

system.out.printf()-java中输出中的条件判断输出

问题描述 java中输出中的条件判断输出 public void showLine(){ System.out.println("直线"+A+"*x"+B+"*y"+C+"=0"); } 我想在B>0时在输出B的前面加一个+号,但是直接在里面用条件?:让输出+判断它说类型不对,可不可以直接在里面就判断了就输出了呢?不用写if再输出 解决方案 System.out.println("直线"+A+&quo

Java中的基础构建模块(第五章)

Java中的基础构建模块 Java平台类库包含了丰富的并发基础构建模块,例如线程安全的容器类以及各种用于协调多个相互协作的线程控制流的同步工具类. 1.同步容器类 同步容器类都是线程安全的,但在某些情况下可能需要额外的客户端加锁来保护复合操作.常见的复合操作包括:迭代.跳转(在容器内元素之间).条件运算(例如"若没有则添加"). 隐式迭代:某些情况下迭代操作会隐藏起来.如下代码中println调用Set的toString方法,然后对Set中的对象进行迭代调用toString方法: pu

Java 中最常见的五个错误

在编程时,开发者经常会遭遇各式各样莫名错误.近日,Sushil Das在 Geek On Java上列举了 Java 开发中常见的 5 个错误,与君共「免」. 1.Null 的过度使用 避免过度使用 null 值是一个最佳实践.例如,更好的做法是让方法返回空的 array 或者 collection 而不是 null 值,因为这样可以防止程序抛出 NullPointerException.下面代码片段会从另一个方法获得一个集合: List<String> accountIds = person

java循环集合-java中死循环是什么意思

问题描述 java中死循环是什么意思 java中死循环是什么意思 循环一次不再循环是死循环还是不断循环才是死循环能否简单的举个死循环单身例子 解决方案 死循环就是循环语句的条件是永远为真,那么循环体将一直执行,一楼说的并不对,循环不一定会导致内存溢出的,只是Java程序一直运行.简单的死循环实例while(true){某个操作,但是没有break语句}循环体中也没有终止循环的break,就是死循环了. 解决方案二: 不断循环直到你內存溢出 解决方案三: while(true){System.ou

java中字符串处理问题

问题描述 java中字符串处理问题 在一个txt文件中,有几行字符串,每行的格式如下, abc1110011110102 abc123001111010a 根据条件做字符串的转换,条件: 1.字符串以abc开头 2.字符串中包含字串001111 3.在字串001111之后的第二个非0字符串如果是数字的话改变成0,如果不是数字不改变 因此,上面给出的两个字符串结果为 abc1110011110100 abc123001111010a 解决方案 public static void main(Str