1

システムの実行をトリガーする単純な GUI があるシステムを構築しています。例外がスローされたときにSystem.exit(0)呼び出され、アプリケーションが停止するようにシステムを実装しました。

現在のように実装を停止したいのですが、GUI も閉じないでください。別のスレッドでシステムを実装しようとしましたが、何らかの例外がスローされたときに、アプリケーションは引き続き終了しました。

UI を開いたままにして実装を停止する方法はありますか?

4

3 に答える 3

2

その目的で Java system.exit を使用することはできません。その関数は、コードを実行している Java 仮想マシンのインスタンスを強制終了し、その結果、アプリケーションのすべてのスレッドを停止するためです。

System.exit を希望どおりに機能させるには、2 つの異なるプロセスが必要で、それぞれが独自の Java 仮想マシンで実行されるようにします。ただし、これにより、相互にリンクすることが難しくなります。

理想的には、実装のロジックを自然に停止するスイッチを GUI スレッドがアクティブ化または非アクティブ化できるように、実装にある種のコントロールを追加する必要があります。私の意見では、これが本当に最善の方法です。

于 2012-04-05T21:32:08.530 に答える
0

基本的に、それらは個別のアプリケーションである必要があります。つまり、別々のスレッドではなく、別々のプロセスにします。

UI とバックエンドの間のこの種の疎結合は、必要な動作を実現し、UI とバックエンドの懸念を分離することに関連する他の多くの利点ももたらします。

于 2012-04-05T21:29:50.890 に答える
0

いいえ、プログラムが同じプロセスで実行されている場合、UI を開いたままにしておく方法はありません。UI とプログラムを別々のアプリケーションとして実行できると思いますが、それは面倒でエラーが発生しやすいようです。例外がスローされた場合は、JVM を終了するだけでなく、ユーザーに通知する必要があります。

于 2012-04-05T21:31:11.643 に答える