我得到一個異常同一代碼:兩個線程調用,即使它是同步
Exception in thread "Thread-0" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
和例外的是,當我嘗試從列表中刪除元素然後得到的第一個。問題是一個線程想要在列表中沒有元素時訪問第一個元素。但我確實在方法存根中放入了。哪裏不對?
private static ArrayList<Pracownik> LIST;
public static synchronized void roll(){
if (LIST.size() > 0) {
LISTA.remove(0);//removing from list
String initials = LISTA.get(0).getInijcaly(); //here is exception
}
}
你是怎麼調用這段代碼的。另外'LISTA.size()'看起來像是通過NPE –
你能告訴我哪一行出現錯誤嗎? – Levenal
如果這是最後一個元素,那麼您將從列表中刪除元素,在下一行您將嘗試從空列表中檢索元素。 – enterbios