问个关于List的多线程问题
对多线程会用一点,但好多都不是太清楚
我想实现下面的一个简单功能:
创建一个类,里面有一个静态的ArrayList,在run中往里面添加元素,再删除掉。
在一个主线程中创建这个类的多个实例,最后要求ArrayList是空的
我自己写了一个,可是都是出错的,不知道该怎么办。
下面是自己写的代码
----------------------------------
import java.util.*;
import java.util.concurrent.*;
class ListTest implements Runnable{
public static int counter=0;
public final int id=counter++;
int innerCount=0;
static List <String> list=Collections.synchronizedList(new ArrayList <String> ());
public void run(){
synchronized(ListTest.class){
list.add(toString());
System.out.println(list.get(0));
list.remove(toString());
}
}
public String toString(){
return "Task "+id+ ": "+(innerCount++);
}
}
public class SynchronizedCollection {
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
ExecutorService exec=Executors.newCachedThreadPool();
for(int i=0;i <10;i++)
exec.execute(new ListTest());
exec.shutdownNow();
System.out.println( "============================== ");
for(String s:ListTest.list)
System.out.println(s);
}
}
------解决方案--------------------换vector试一试
------解决方案--------------------同意ls,vector是线程安全的,换下试试吧