2010-02-19 81 views
-1

如何修復此代碼?我不知道這個錯誤意味着什麼...我聽說它來自每個循環中刪除列表中的元素,但我沒有看到任何東西我正在刪除...線程「AWT-EventQueue-0」中的異常java.util

public void paintComponent(Graphics g) 
    { 
     Graphics2D g2 = (Graphics2D) g; 
     for(Layer e : layerList) 
      e.drawLayer(g2); 
    } 

jcomponent具有一個名爲圖層的對象列表,它將圖形傳遞給圖層以便圖層自己繪製。我從不刪除任何層或任何東西,所以我迷路了。幫幫我?

+3

它通常有助於發佈堆棧跟蹤。當你想獲得更多的經驗時,你會學會閱讀這些經歷,並感謝他們的巨大價值。 – 2010-02-19 05:08:58

+0

你確實需要發佈堆棧跟蹤。現在,我們甚至沒有例外的名稱和消息。 – Thilo 2010-02-19 05:51:23

回答

1

如果您有多個可以與圖層列表一起工作的線程,則應考慮使用下面的示例中的同步塊。這將有助於防止此問題,或者您可以考慮讓layerList同步化,但無法瞭解程序和線程結構的更多信息,因此很難告訴您什麼是最好的。作爲選項而不是同步塊檢出this synchronized list

synchronized(layerList) 
{ 
    for(Layer e : layerList) 
     e.drawLayer(g2); 
} 
+0

這是一個可能的答案;您正在訪問不是線程安全的layerList,因此使用java.util.Vector或使用synchronized將解決此問題。 – CharlesS 2012-08-03 10:31:04

+0

@CharlesS考慮如果你仍然在使用它,請關閉Vector,看看這個問題,爲什麼[Vector已被視爲已過時](http://stackoverflow.com/questions/1386275/why-is-java-vector-class-considered-過時的或 - 棄用)。 – 2012-08-03 15:09:14