Grundsätzlich habe ich einfache Nachrichten App, jetzt möchte ich News-Liste automatisch für alle Benutzer aktualisiert werden, wenn jemand fügt hinzu oder entfernt Nachrichten, es funktioniert irgendwie, aber manchmal bekomme ich ConcurrentModificationException, ich brauche nur Hilfe beim Schreiben dieser Methode :Frühling lang polling ConcurrentModificationException
@GetMapping("/pollnews")
@ResponseBody
public DeferredResult<ModelAndView> poll(Model model){
DeferredResult<ModelAndView> result = new DeferredResult<>();
new Thread(new Runnable() {
@Override
public void run() {
while(true){
if(changeOccured){
changeOccured = false;
model.addAttribute("news", newsService.getAllNews());
result.setResult(new ModelAndView("partial"));
break;
}
}
}
}).start();
return result;
}
Stapelüberwachung:
Exception in thread "Thread-13" java.util.ConcurrentModificationException
at java.util.ArrayList.sort(ArrayList.java:1456)
at com.newsapp.SpringNews.Service.NewsService.getAllNews(NewsService.java:25)
at com.newsapp.SpringNews.Controller.ViewController$1.run(ViewController.java:125)
at java.lang.Thread.run(Thread.java:748)
Sie geben an, in welcher Zeile die Ausnahme auftritt? – Lino
Es tritt in der NewsService-Klasse und getAllnews() -Methode, aber es spielt keine Rolle, da ich denke, dass ich diese Poll() -Methode falsch geschrieben und Problem ist wahrscheinlich dort ... –
können Sie den Stack-Trace zu Ihrer Frage hinzufügen? weil ich nichts falsch mit Ihrer Methode sehe – Lino