`
xitong
  • 浏览: 6228477 次
文章分类
社区版块
存档分类
最新评论

正确释放资源方法

 
阅读更多

1.只限于一个方法的资源


public static Properties loadProperties(String fileName)
throws IOException {
FileInputStream stream = new FileInputStream(fileName);
try {
Properties props = new Properties();
props.load(stream);
return props;
}
finally {
stream.close();
}
}

2.可靠的释放多个资源的方法

public void enumerateBar() throws SQLException {
Statement statement = null;
ResultSet resultSet = null;
Connection connection = getConnection();
try {
statement = connection.createStatement();
resultSet = statement.executeQuery("SELECT * FROM Bar");
// Use resultSet
}
finally {
try {
if (resultSet != null)
resultSet.close();
}
finally {
try {
if (statement != null)
statement.close();
}
finally {
connection.close();
}
}
}
}

private Connection getConnection() {
return null;
}

3.绑定连接的脆弱实现关闭


public class BoundedSet<T> {
private final Set<T> set = ...
private final Semaphore sem;

public BoundedHashSet(int bound) {
sem = new Semaphore(bound);
}

public boolean add(T o) throws InterruptedException {
sem.acquire();
boolean wasAdded = false;
try {
wasAdded = set.add(o);
return wasAdded;
}
finally {
if (!wasAdded)
sem.release();
}
}
}

参考ibm文章
http://www-128.ibm.com/developerworks/cn/java/j-jtp03216.html?ca=dwcn-newsletter-java

分享到:
评论

相关推荐

    Signalr:SignalR –正确的方法

    SignalR –正确的方法 SignalR已经存在了一段时间,2014年,所以为什么没有更多的人使用它呢? 首先,SignalR是什么? ASP.NET SignalR是ASP.NET开发人员的库,可轻松开发实时Web功能。 SignalR允许服务器和客户端...

    。net面试大全(附答案)

    2.对于一个实现了IDisposable接口的类,以下哪些项可以执行与释放或重置非托管资源相关的应用程序定义的任务?(多选) ( ABC ) A.Close B.Dispose C.Finalize D.using E.Quit 3.以下关于ref和out的描述哪些项是...

    JAVA基础:将数据库操作封装到Javabean文档信息

    例如,直接使用 Connection 对象来操作数据库,可能会导致资源未释放的问题,因为 Connection 对象是资源密集型的对象,需要正确地关闭,以释放资源。 解决方案 为了解决这些问题,开发者们通常会将数据库操作封装...

    C#实现终止正在执行的线程

    如果你的线程正在操作临界资源,很有可能会造成资源没有正确释放而出现死锁问题。正确的做法应该是使用标记来终止线程的执行。 基本思路是:定义一个用于描述“停止”信号的变量,在整个程序启动前,设置该变量为...

    python串口通信案例

    关闭串口:使用close()方法关闭串口连接,释放资源。 以上是串口通信的基本步骤。在实际应用中,还可以添加异常处理、循环读取和写入数据、解析数据等功能,以满足具体的需求。 需要注意的是,在进行串口通信时,...

    Java学习笔记

    其中的代码语句论有没有异常都会被执行(因为finally子句的这个特性,所以一般将释放资源,关闭连接的语句写在里面)。 finally中的代码和try-catch中的代码冲突时,finally中的代码一定会被执行且会忽略try-catch中...

    jleaks:Java Resource Leaks Monitor,用于Java资源泄露检测

    Java的类不像C++拥有析构函数,对于库的提供者,C++程序员面对上述问题只要简单的在析构函数中释放其资源即可,但是Java通常是提供一个close()方法给使用者,要求使用者主动调用去释放资源,但是如果使用者没有调用...

    C语言与Lua之间的相互调用详解

    在C中嵌入lua脚本既可以让用户在不重新编译代码的情况下修改lua代码更新程序,也可以给用户提供一个自由定制的接口,这种方法遵循了机制与策略分离的原则。在lua中调用C函数可以提高程序的运行效率。lua与C的相互...

    java,c/c++,php,c#安全编码规范

    1 业务安全编码规范 6 1.1 输入验证和数据合法性校验 6 ...2.7.3 及时释放资源 27 2.8 序列化 28 2.8.1 不要序列化未加密的敏感数据 28 2.8.2 在序列化过程中避免内存和资源泄漏 29 3 其他参考资料 30

    100家大公司java笔试题汇总.docx

    3. Java中的finally块可以用来释放资源,防止内存泄露。 八、多线程编程 1. Java中的多线程编程是通过Thread类和Runnable接口来实现的。 2. Java中的线程可以是daemon线程,也可以是用户线程,daemon线程是一种...

    Linux僵死进程的产生与避免.pdf

    Linux 操作系统中,僵死进程(Zombie Process)是一种特殊的进程状态,它是指一个进程已经终止,但是其父进程没有通过wait或waitpid函数来回收它的状态信息,而使得进程所占用的资源无法释放,导致系统资源的浪费。...

    如何设置虚拟内存 winxp、win2003最正确的设置虚拟内存方法

     我一开始也是百思不得其解,以为2003系统就是这样的,也尝试用supercach、ramdisk这些软件解决,但这些软件有非常大的缺点:不会释放分配的物理内存(这也是浪费啊),占用资源经常卡住电脑。其实以上问题都是虚拟...

    java经典面试2010集锦100题(不看你后悔)

    下面完善上面程序(1)和(2)处的方法中正确的是:(选择1项) A) (1)abstract (2)public B) (1)public (2)public C) (1)public (2)abstract D) (1)abstract (2)abstract 题目22:a 下面关于...

    C++ 中boost::share_ptr智能指针的使用方法

    智能指针能够使C++的开发简单化,主要是它能够自动管理内存的释放,而且能够做更多的事情,即使用智能指针,则可以再代码中new了之后不用delete,智能指针自己会帮助你管理内存资源的释放。 Boost库的智能指针有很多...

    全业务端到端-L1(1).xlsx

    电路停闭或者调整工单,工单未完成归档之前,被释放部分资源是否可以在其它工单调度使用 对于新增资源数据,在设备入网验收时,各专业网络和系统接维人员应对______的完整性和准确性进行100%核查。 跨省专线验收接维...

    C语言如何正确的终止正在运行的子线程

    线程数非常之多,当用户输入Ctrl+C的情形下,默认的信号处理会把程序退出,这时有可能会有很多线程的资源没有得到很好的释放,造成了内存泄露等等诸如此类的问题,本文就是围绕着这么一个使用场景讨论如何正确的终止...

    Python编程基础与应用-课后题解练习题-(7)2页.docx

    与类同名 B.__init__() C.init() D.__del__ 4)Python中用于释放类占用资源的方法是: A.del() B.remove C.__delete() D.pop 5)以下表示C类继承A类的格式中,正确的是: A.class C A: B.class C:A C.class C(A) D....

    python互斥锁、加锁、同步机制、异步通信知识总结

    直到该线程释放资源,将资源的状态变成“非锁定”,其他的线程才能再次锁定该资源。互斥锁保证了每次只有一个线程进入写入操作,从而保证了多线程情况下数据的正确性。 采用f_flag的方法效率低 创建锁 mutex=...

    Python中Threading用法详解

    Python的threading模块松散地基于Java的threading模块。但现在线程没有优先级,没有...会导致资源不能正确的释放。在非守护进程中使用Event。 Thread 类 (group=None, target=None, name=None, args=(), kwargs={}, *

    word源码java-Hello-Fan:高级软件实作,繁体字学习软件,你好繁!

    word源码java ...文档中对方法的说明,简单理解就是,调用这个方法释放资源。 Releases a reference to the object, closing the object if the last reference was released. Calling this method i

Global site tag (gtag.js) - Google Analytics