Поскольку объекты, которые мы разделяем в шаблоне проектирования в полутяжелом весе, являются неизменяемыми, мне интересно, нужно ли нам учитывать синхронизацию?Даже если несколько потоков пытаются получить доступ к одним и тем же объектам и вставить их в общий пул, так как объекты всегда одинаковы, я думаю, что нам не нужно синхронизировать, пожалуйста, расскажите об этом немного подробнее.Спасибо
public class WeakPool<T> {
private final WeakHashMap<T, WeakReference<T>> pool = new WeakHashMap<T, WeakReference<T>>();
public T get(T object) {
final T res;
WeakReference<T> ref = pool.get(object);
if (ref != null) {
res = ref.get();
} else {
res = null;
}
return res;
}
public void put(T object) {
pool.put(object, new WeakReference<T>(object));
}
}
public class InternPool<T> {
private final WeakPool<T> pool = new WeakPool<T>();
public synchronized T intern(T object) {
T res = pool.get(object);
if (res == null) {
pool.put(object);
res = object;
}
return res;
}
}
Вот код из этого поста: Общий InternPool в Java?
Вопрос в том, нужна ли нам синхронизация в этомметод интерна?