У меня есть класс Java, который запускает 2 отдельных потока. Первый поток запускается отлично, и все переменные правильны.Многопоточность Java и глобальные переменные
Когда я начинаю второй поток глобальные переменные из нити одного изменения значений, установленных в потоке 2.
Я попытался добавить синхронизированные блоки, где обновляются глобальные переменные, но это не сработало.
Есть ли способ решить эту проблему? Я хочу, чтобы каждый поток запускался и использовал свои собственные значения без помех в других значениях потока.
EDIT:
Отрывок из моего класса Thread:
public abstract class ConsumerIF implements Runnable {
public static Element root = null;
public static String name = null;
public static String type = null;
public static String location = null;
public final synchronized void reconfigure() throws FatalDistributionException {
Document doc = builder.build(new StringReader(xmlCollector));
root = doc.getRootElement();
Element nameElement = root.getChild("name");
Element typeElement = root.getChild("type");
Element locationElement = root.getChild("location");
Element scheduleElement = root.getChild("schedule");
if (nameElement != null && typeElement != null && locationElement != null){
name = nameElement.getTextTrim();
type = typeElement.getTextTrim();
location = locationElement.getTextTrim();
}
}
}
i. е. удалите любую «статическую», которую вы, возможно, использовали – necromancer
Вставка кода будет полезной – Mifeet
Статические переменные распределяются между всеми экземплярами вашего «ConsumerIF» –