Скажем, у меня есть класс, определенный как:Блокировать статические методы?
public class MyClass {
private static int data;
public static staticMethod(int val){
... do something with data based on val ...
}
}
А теперь у меня есть много Java потоков, выполняющихся в моем приложении, которые делают вызовы к статическому методу
MyClass.staticMethod(int)
Будет ли метод блочного на каждый вызов? то есть, если поток 1 вызывает метод первым, и пока этот запуск метода выполняется, поток 2 вызывает статический метод, будет ли второй поток ждать до завершения первого выполнения?
Если ответ отрицательный, тогда, когда имеет смысл использовать статические элементы данных несинхронизированным образом?
Почему бы вам не попробовать и не посмотреть? – SevenBits
@SevenBits, потому что проблемы параллелизма часто не проявляются до тех пор, пока не возникнет высокая конкуренция, поэтому усилия по их устранению по дизайну часто будут платить за себя. Этот подход «попробуйте и посмотрите», чтобы понять технические характеристики, приводит к тому, что код работает до тех пор, пока это не будет иметь значения. –
До сих пор довольно просто попробовать это и посмотреть, что произойдет. –