static
переменная class
в процессе будет разделена между всеми потоками, содержащимися в этом процессе.
Вы можете проверить это, создав простое class
с полем public static
, а затем запустите пару Threads
и попросите их увеличить переменную и посмотреть, что произойдет.
Если вы хотите обеспечить взаимное исключение, вы можете сделать переменную закрытой и разрешить доступ к ней только через методы, которые определены с помощью ключевого слова synchronized
.
class Foo {
private static int aVariable = 0;
public static synchronized void increment() { aVariable++; }
public static synchronized int getVariable() { return aVariable; }
}