Неясно, хотите ли вы получить доступ к хэш-картам внутри объекта a
с несколькими потоками или вызвать метод foo
с несколькими потоками.
В первом случае безопасность потока коллекции не имеет ничего общего с внешним контекстом, то есть она была создана в статическом контексте или нет. Поэтому нет, если вы попытаетесь получить доступ к хэш-картам из объекта a
с несколькими потоками, это вызовет неожиданное поведение. Вам необходимо отрегулировать доступ к ним с помощью блоков synchronized
.
Во втором случае каждый поток будет иметь другую копию foo в своем стеке и выделить другой экземпляр ClassA
. Поэтому они не будут сталкиваться, потому что они будут иметь разные HashMaps
для работы.
Просьба пояснить, в каких случаях вы работаете.
Непонятно, как эти карты используются и определяются. HashMap не является потокобезопасным. Но см. Параллельные хэш-карты: http://docs.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/ConcurrentHashMap.html – Adrian