Другой вопрос: синхронизирован. У меня также есть run() в классе Note, потому что я хочу вывести каждый элемент в заметках каждые 5 минут. Но я всегда получаю исключение: java.util.ConcurrentModificationException, если я попытаюсь сделать больше встреч в основном. поэтому я использую синхронизацию с примечаниями к списку, которые могут быть добавлены в новую встречу, когда я перебираю заметки. Мой метод запуска выглядит следующим образом:Это хороший способ предотвратить ConcurrentModificationException
Правильно ли он записывается в виде списка, чтобы синхронизировать его для предотвращения ConcurrentModificationException? (В моей программе works.I получить никогда это исключение сейчас)
Класс Meeting и Примечание Класс может нравится это:
public class Meeting{
public Meeting(Note note_1,Note note_2){
note_1.addElement(this);
note_2.addElement(this);}
//another method hier
}
public class Note implements Runnable{
public final List<Meeting> notes = new ArrayList<Meeting>();
public void addElement(Meeting n){
entries.add(n);
}
@Override
public void run(){
while(true) {
for(Meeting n : notes){
System.out.println(n.toString);}
}
try{ Thread.sleep(10);}
}
}
}
я всегда исключение ошибок о исключения: java.util.ConcurrentModificationException если я пытаюсь сделать больше Встречу в основной, так я изменяет Littel в классе Примечание, любит это:
private static final List<Entry> entries = Collections.synchronizedList(new ArrayList<Entry>());
и в перспективе()
@Override
public void run() {
while(true){
synchronized(notes){
for(Entry n : entries){
//do something
}
}
try {
Thread.sleep(10);
} catch (InterruptedException e) {
}
}
}
}
Хотя за исключением было то, что привело вас сюда, я также должен указать, что ваша логика не идеальна, поскольку [вы не должны публиковать ссылку на «это» во время строительства] (http://www.ibm.com/developerworks/java/library /j-jtp0618.html), если вы хотите использовать несколько потоков, так как это может сломать инварианты, которые должны «всегда» удерживаться. Кроме того, отступы ваш код правильно и последовательно поможет читаемость удивительной суммы. –
Спасибо Andrzej и Извините, что мой код не размещен должным образом. Многопроцессы не приводят к ConcurrentModificationException в моей программе. Это происходит, когда я перебираю список в классе Note и, возможно, новый объект собрания хочет добавить себя в список – echo