私がstop-the-world GCを使用し、finalize()
メソッドでいくつかの処理を行うと、すべてのスレッドが中断されていると仮定して、何でもできますし、スレッドはリソースと競合する私はGCのスレッドを除いて?排他ロックとしてファイナライズを使用する
3
A
答えて
4
いいえ、実際にも、同時に実行される複数のファイナライザスレッドが存在してもよい..異なるGCの実装の間で変化してもよいです。
java language specから、「ファイナライザは、任意の順序で、または同時に呼び出すことができます。」
2
んが、あなたがすることはできません - 少なくとも私の知る限りホットスポットの実装を理解するよう:
は、少なくともそれはそれはマーク&スイープGCでどのように動作するかですが、私はそれが他のすべての実装に似てかなり確信しています
マークされていないファイナライズされたオブジェクトはすべて、マークビットが設定されたワークリストに追加されます。
次に、バックグラウンドワーカーがこのリストを処理し、1つのファイナライズコールで終了した後、マークビットがクリアされ、次のGCでクリアされます。その結果、finalizeメソッドがいつ呼び出されるかについては何も仮定することはできません(バックグラウンドスレッドはおそらく停止している可能性があるので、GC実行中ではないことを確かめることができます)。
は今ではホットスポットのための実装の詳細だとも
関連する問題
- 1. テスト排他ロック
- 2. NHibernate:排他ロック
- 3. とノーロックと排他ロック
- 4. 排他ロックmysqlデータベースには?
- 5. boost :: shared_lockを排他ロックにアップグレードする
- 6. 排他ロックと共有ロックの違いは何ですか?
- 7. linux flock(2)を排他的な排他ロック要求から守るには?
- 8. 接続文字列を使用してSQL Express DBを接続すると、排他ロックですか?
- 9. IBM MQ送信キュー排他ロック
- 10. 排他的ロックを取る正しい方法
- 11. SqliteのファイナライズとDbロックの問題
- 12. Hibernateを使用したSpringトランザクションを使用するSQL Server排他的な行ロック(XLOCK ROWLOCK)
- 13. PostgreSQLの排他ロックがアプリケーションを停止します
- 14. 排他的なリソースアクセスのHTTPリクエストをロックする
- 15. (XLock、RowLock)は行を排他的にロックしません
- 16. RubyとActiveRecordを使用して排他INクエリを構築する方法は?
- 17. SQlite JDBCライブラリを使用してJava/Scalaで排他ロックを持つSqlite接続を開きます
- 18. はファイルの排他ロックを取得できません
- 19. ラジオボタンとチェックボックスを排他にする
- 20. Java - 排他アクセスのためのファイルのロック
- 21. iPhone&Objective-Cの共有/排他ロック機構?
- 22. ソフトウェアを排他的シェルアプリケーションとして実行しますか?
- 23. 相互に排他的なグループを使用する
- 24. は排他的
- 25. ソースセーフ、排他ロックファイル
- 26. setValueAtを使用して相互排他的なチェックボックスを再作成
- 27. 排他ロックを取得できないのはなぜですか?
- 28. 排他的iOS UTI
- 29. ロックされたオブジェクトを排他的に変更するときの変な動作 - Monitor.Enter(x)
- 30. ApacheサーバとTortoiseSVNを使用してファイルをロックする
*「スレッドは競争することはできません」* - 私は貧しい小さなアプリケーションスレッドが大きな意味を持つ古いGCスレッドが終了するのを待ってコーナーで震えていることを想像することができます:-) –