Чтобы получить доступ к одному и тому же фрагменту данных, вам просто нужно убедиться, что вы обращаетесь к одному и тому же экземпляру класса. Таким образом, 2 потока, поражающие один и тот же синглтон или один и тот же объект, полученный на некоторой фабрике, будут получать один и тот же фрагмент данных. Очевидно, точный сценарий зависит от вашего приложения.
Проблемы параллелизма, как правило, возникают только при изменении некоторого фрагмента данных. Например, у вас был следующий класс:
class Container {
private List<?> data;
public List<?> getData() {
return this.data;
}
public void addData(Object data) {
this.data.add(data);
}
}
Тогда это не обязательно будет потокобезопасным. Чтобы обеспечить безопасность потоков, вам необходимо заблокировать монитор объекта. В этом сценарии это можно сделать одним из двух способов:
class Container {
private List<?> data;
public synchronized List<?> getData() {
return this.data;
}
public synchronized void addData(Object data) {
this.data.add(data);
}
}
Это решение будет блокировать вызовы getData и setData для блокировки экземпляра контейнера. Это хорошо, за исключением того, что если вы добавите третий метод в этот класс, который вообще не использует данные, то он также будет заблокирован, если какой-либо поток будет внутри getData или setData. Чтобы сделать его более конкретным, вы можете сделать:
class Container {
private List<?> data;
public List<?> getData() {
synchronized (this.data) {
return this.data;
}
}
public void addData(Object data) {
synchronized (this.data) {
this.data.add(data);
}
}
}
Затем используется блокировка объекта переменных данных. Преимущество этого заключается в том, что если вы добавите третий метод, который не использует данные, он не будет заблокирован вызовами getData или setData.
Это базовый обзор безопасности параллелизма Java, надеюсь, он поможет.
Обратите внимание, что клиент-серверный характер вашей проблемы мало что меняет. Если ваши потоки создаются, например, потоком на запрос через сервлеты Java или что-то еще, то все это применяется точно так же.