2

如果 Java 线程在其 run 方法中没有循环,是否可以安全地假设一旦 run 方法完成,线程将被销毁。让我们考虑以下代码,

Thread t = new Thread(){
   public void run(){
      System.out.print("Hello World!");
   }
};

t.start();

在上面的例子中,一旦 run 方法结束,如何将系统资源返回给系统?

4

2 回答 2

7

假设运行方法完成后线程将被销毁是否安全。

是的。

如何将系统资源返回给系统?

对象引用(即内存资源)将被垃圾收集。无需采取具体行动。

文件、数据库资源在finally使用完后可以在块中关闭。

finally {
 resource.close();
}

您还可以在 Java 7 中使用新的try 资源

于 2013-02-25T05:40:35.657 回答
1

与给定对象相关的所有系统资源都由垃圾收集器在它认为合适的时候释放。

虽然资源确实会归还,但重要的是不要指望它们立即归还,甚至在有限的时间内归还;永远不要依赖垃圾收集器在需要时做某事。C++ 中的作用域对象就是这样,但在 java 中却不是这样。

一些资源可以手动释放(通常是一种obj.close()方法),例如文件和套接字。

于 2013-02-25T06:03:14.733 回答