(ここで質問する必要があるかどうかわかりません)ほとんどの変数がstaticである同じ Java プログラムを 2 回実行したいと考えています。
これを2回(同時に)実行した場合、これらの静的変数は同じ値になりますか、それとも異なりますか?
静的変数はクラス変数であるため、これは私を混乱させます。
(ここで質問する必要があるかどうかわかりません)ほとんどの変数がstaticである同じ Java プログラムを 2 回実行したいと考えています。
これを2回(同時に)実行した場合、これらの静的変数は同じ値になりますか、それとも異なりますか?
静的変数はクラス変数であるため、これは私を混乱させます。
静的値はクラスごとであり、同じ Java プログラムを 2 回実行すると、2 つの JVM が作成され (タスク リストに 2 つの Java プロセスが表示されます)、クラスが 2 回 (JVM ごとに 1 回) ロードされます。静的変数は共有されません。
各実行には独自の JVM インスタンスがあるため、静的変数が衝突することはありません。
たとえば、次の方法でアプリケーションを 2 回起動する場合:
java Your.MainClass
2 回目の実行の値は、最初の実行の影響を受けません。これはまったく新しいプロセスです。
ただし、単一のアプリケーションのライフサイクルで静的メソッドを 2 回実行している場合、上で書いたことはもはや成り立たなくなります。