2

Java スレッドの run メソッドにループがない場合、run メソッドが完了すると Thread が破棄されると想定しても安全ですか。次のコードを考えてみましょう。

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

t.start();

上記の例では、run メソッドが終了したら、システム リソースをシステムに戻すにはどうすればよいですか?

4

2 に答える 2

7

run メソッドが完了すると、 Thread が破棄されると想定しても安全ですか。

はい。

システムリソースをシステムに戻すにはどうすればよいですか?

オブジェクト参照 (つまりメモリ リソース) はガベージ コレクションされます。特定のアクションを実行する必要はありません。

ファイル、DB リソースは、finally使用後にブロックで閉じることができます。

finally {
 resource.close();
}

Java 7 のリソースで新しいtry を使用することもできます

于 2013-02-25T05:40:35.657 に答える
1

特定のオブジェクトに関連するすべてのシステムリソースは、適切と思われるガベージコレクターによって解放されます。

リソースは実際に返されますが、すぐに、または限られた時間内に返されることに依存しないことが非常に重要です。必要なときにガベージコレクターが何かを実行することに依存しないでください。これは、C ++のスコープオブジェクトではそのようでしたが、Javaではそうではありません。

obj.close()ファイルやソケットなど、一部のリソースは手動で解放される場合があります(通常はメソッド)。

于 2013-02-25T06:03:14.733 に答える