Java析构函数

qq_45470310 2020-06-25 09:08:20
我用JNA写了一个操作进程的程序,类析构时需要用CloseHandle()函数关闭进程句柄
大概这么写

class Process {
private HANDLE handle
public Process(HANDLE h) {
handle = h;
}
......
@Override
public void finalize(){
CloseHandle(handle);
}
}

使用时:

// in method main()
Process p = new Process(handle);
...
p = null;
System.gc();

但这样写的话感觉有点麻烦,有没有什么更为便捷的方法?
...全文
1764 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
捏造的信仰 2020-07-09
  • 打赏
  • 举报
回复
不要这么做,而要在一个可靠的,具体的代码触发点来关闭句柄。Java 的 finalize() 概念是一个已经被剔除了的概念,不要想着利用它做任何事。
faith.huan 2020-06-26
  • 打赏
  • 举报
回复
直接调用CloseHandle(handle);就行,不要写finalize(),这个无法保证一定会执行,jdk10+已弃用此方法

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧