2017-04-24 4 views
3

私はのメインのメソッドを同期させることについて以下のようにしています。メイン()のみで構成された.jarファイルが同時に2回実行されないように、main()メソッドをsynchronizedとして宣言できますか?

だから、この議論に読んで: Declaring the main method synchronized

私はそれを読むことができます:

が同期化されているが望ましいことかもしれない同時に 実行されることから、複数のインスタンスを防ぐことができます。

このアサーションは正確にはどういう意味ですか?

私は例をやろう:

私はデータベースにいくつかのものを行う非常にlitleバッチ・アプリケーションを持っています。このアプリケーションは主にmain()メソッドから構成されています。実行できるファイル.jarでコンパイルしました。これは、同期としてこの)(メインメソッドを宣言することを意味

私は同時に、このjarファイルの2のインスタンスを実行することはできませんか?または私は何かを逃していますか?

+1

*このjarファイルの2つのインスタンスを同時に実行することはできませんか?*これは正しいとは限りません。 'jar'を2回実行している場合、別々のJVMになります。私はロックファイルの解決策に行くだろう –

答えて

8

いいえ、それはできません。同期は、同じプログラム実行内でのみ機能します。 jarを2回起動すると、2つの異なるプログラム実行が開始され、それぞれが独自のアドレス空間を持ち、オブジェクトやメモリを共有しません。

同じプログラムを複数回実行しないようにするには、ロックファイルなどの外部ロック用のものが必要です。

1

​​ような何かを試すことができます。これは、主にデータの完全性を維持するために行われます。

同期の範囲が複数のOSにまたがっていませんprocess。したがって、メインメソッドを同期としてマークすると、目的の効果が得られません。

関連する問題