java - ArrayList ThreadSafety Test Code fails -
java - ArrayList ThreadSafety Test Code fails -
given, add method defination in arraylist follows :-
public boolean add(e e) { ensurecapacity(size + 1); // increments modcount!! elementdata[size++] = e; homecoming true; } please find next programme check thread safety of arraylist.
package pack4; import java.util.arraylist; public class demo { public static void main(string[] args) { arraylist<string> al = new arraylist<string>() ; new addfirstelementthread(al).start() ; new removefirstelementthread(al).start() ; } } class addfirstelementthread extends thread{ arraylist<string> list ; public addfirstelementthread(arraylist<string> l) { list = l ; } @override public void run() { while(true){ if(list.size() == 0){ list.add("first element") ; } } } } class removefirstelementthread extends thread{ arraylist<string> list ; public removefirstelementthread(arraylist<string> l) { list = l ; } @override public void run() { while(true){ if(list.isempty()){ try{ list.get(0) ; system.out.println("hence proved, arraylist not thread-safe."); system.exit(1) ; }catch (exception e) { //continue, if no value there @ index 0 } } } } } but, programme never terminates, fails prove thread-safety of arraylist.
please, suggest right implementation test thread-safe behaviour of arraylist , vector.
thanks & best regards,
rits
arraylist not thread-safe; vector is. can wrap arraylist collections.synchronizedlist() if require it.
java multithreading collections thread-safety arraylist
Comments
Post a Comment