2013-08-30 3 views
1

다음 코드는 버튼점점 java.util.ConcurrentModificationException

for(Iterator <PrintWriter> it=TABhs.iterator();it.hasNext();) 
        { 
         PrintWriter ot=it.next(); 
         ot.println("tableupdate#"+tables+"#"+kotno+"#processing"); 
         ot.flush(); 
         JOptionPane.showMessageDialog(rootPane, "<html><body>Table Kot Status Changed to <b>Processing</b></body></html>"); 
        } 

사람이

여기

TABhs 나에게 몇 가지 솔루션을 알 수있다 HashSet의와 클릭에 여러 번 실행 얻을 java.util.ConcurrentModificationException을 받고 의 PrintWriter 제네릭

HashSet <PrintWriter> TABhs=new HashSet<PrintWriter>(); 

버튼 클릭 동작은

,691 아래에 표시됩니다
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {           
     String stat=status_combo.getSelectedItem().toString(); 
     String tables=tableno_combo.getSelectedItem().toString(); 
     String kotno=kotno_combo.getSelectedItem().toString(); 

     if(stat.equals("Processing")) 
     { 
      try { 
       String quer="UPDATE table_orders SET status='"+stat.toLowerCase()+"' WHERE tableno='"+tables+"' AND kotno='"+kotno+"'"; 
       int restatus=dbGetDet.insertDetails(quer); 
       if(restatus>0){ 
       filtercomboBox(); 
       fillTable(); 
       for(Iterator <PrintWriter> it=TABhs.iterator();it.hasNext();) 
       { 
        PrintWriter ot=it.next(); 
        ot.println("tableupdate#"+tables+"#"+kotno+"#processing"); 
        ot.flush(); 
        JOptionPane.showMessageDialog(rootPane, "<html><body>Table Kot Status Changed to <b>Processing</b></body></html>"); 
       } 



        System.out.println("TABhs--------------------->"+TABhs.size()); 
       } 
      } catch (Exception ex) { 
       Logger.getLogger(MYClientclass.class.getName()).log(Level.SEVERE, null, ex); 
      } 
     } 
} 
+0

세트를 수정하는 다른 스레드가 있습니까? –

답변

0
TABhs = new CopyOnWriteArraySet(TABhs); 
    for(Iterator <PrintWriter> it=TABhs.iterator();it.hasNext();) 
    { 
      PrintWriter ot=it.next(); 
      ot.println("tableupdate#"+tables+"#"+kotno+"#processing"); 
      ot.flush(); 
      JOptionPane.showMessageDialog(rootPane, "<html><body>Table Kot Status Changed to <b>Processing</b></body></html>"); 
    } 
+0

이 부분은 무엇입니까 CopyOnWriteArraySet() –

+0

스레드 안전 구현을 설정합니다. http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/CopyOnWriteArraySet.html – Prabhakaran

+0

예외가 발생했습니다. ------------ 기호 심볼을 찾을 수 없습니다. CopyOnWriteArraySet() 위치 : 클래스 kotouch.MYClientclass –

관련 문제