0

Thread を拡張して Java で Thread を使用しています。このスレッドは、いくつかのバックグラウンド作業を継続的に実行しています。しかし、しばらくすると (約 15 分) スレッドが自動的に閉じられ、プログラムがクラッシュします。いくつかのバックグラウンド機能を実行するJavaで長期実行スレッドを作成する方法を手伝ってください。スレッドはアプリケーションが動作するまで生き続ける必要があります。しかし、私の問題は、アプリケーションがシャットダウンする前でもスレッドが閉じていることです。

よろしく、 アレンリー MJ

> Exception Coming:Execution protection violation
> #
> # A fatal error has been detected by the Java Runtime Environment:
> #
> #  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x1000cb77, pid=1028, tid=11996
> #
> # JRE version: 7.0_10-b18
> # Java VM: Java HotSpot(TM) Client VM (23.6-b04 mixed mode, sharing windows-x86 )
> # Problematic frame:
> # C  0x1000cb77
> #
> # Failed to write core dump. Minidumps are not enabled by default on client versions of Windows
> #
> # An error report file with more information is saved as:
> # E:\alen_project\QrCodeScanningAppForCCD\hs_err_pid1028.log
> #
> # If you would like to submit a bug report, please visit:
> #   http://bugreport.sun.com/bugreport/crash.jsp
> # The crash happened outside the Java Virtual Machine in native code.
> # See problematic frame for where to report the bug.
> #
4

2 に答える 2

0

実行する作業がある間は、スレッドをシャットダウンしないでください。未処理の例外、メモリ リークなどの理由で、おそらく何かを見逃して、スレッドが停止します。

于 2013-03-27T08:47:56.463 に答える
0

コードに問題があるはずです。スレッドの isAlive() メソッドを使用して、スレッドがまだ生きているか死んでいるかを確認できます。

スレッドは、実行が完了するか実行時例外をスローした場合にのみ、強制終了できます。

このトピックについてさらに明確にしたい場合は、例外トレースを投稿してください。sleep(int) メソッドまたはフラグ付きの while ループを使用して、必要に応じてスレッドを明示的に存続させることができますが、良いアイデアではありません。

メイン メソッドがスレッドを開始し、その実行を完了する場合があります。これは、両方が別個のプロセスであるため発生します。

メインで myThreadReference.join() メソッドを使用して、スレッドの実行が完了するまでメイン メソッドを待機させ、メインのスレッドによって入力された変数/データを赤くすることができます。

于 2013-03-27T08:50:30.080 に答える