Есть ли какие-либо проблемы с синхронизацией / ссылкой в этом коде?
(Предположим, что myStrings
уже создан.)
MySynch.java
:
public class MySynch
{
public static String[] myStrings = new String[10];
public static void updateStrings()
{
synchronized (myStrings)
{
myStrings = new String[10]; // Safe?
myStrings[0] = something[0];
myStrings[1] = somethingElse[4];
}
}
}
Массив объектов myStrings
может быть прочитан более чем одним потоком и имеет один поток, который обновляет (записывает) его, выполняя updateStrings()
.Потоки, которые читают из него, также будут использовать блок synchronized (myStrings)
для чтения из него, конечно, для безопасности.
Существуют ли проблемы с блокировкой массива и его созданием снова внутри synchronized
блок, который его блокирует (как указано выше)?