multithreading - Java ArrayList removes non existing objects from parallel thread -


lately playing around semaphores , multithreading, when noticed, weird going on array list. more details:

i have class single private arraylist:

public class newclass{      private arraylist list = new arraylist();      public void put(object val){         list.add(val);     }      public void del(object val){         list.remove(val);     } } 

from thread, i'm trying remove elements (without putting before that):

public class someclass {      public static void main(string[] args) throws interruptedexception {         new someclass();     }      public someclass() throws interruptedexception {         thread tr2 = new thread() {             @override             public void run() {                 newclass nc = new newclass();                 (int = 0; < 100; i++) {                         nc.del(i);                 }             }         };         tr2.start();     } } 

and when thread starts working - have no errors, no exceptions, etc. while, if debugging, can see, list.indexof(val); return -1 value - not exist, "removed". can explain going on here?

lists don't throw exceptions if try remove things aren't in remove(object o) method. return false.


Comments