本帖最后由 黑马刘涛 于 2012-7-16 12:13 编辑
- import java.util.*;
- class Student{
- public Student(String name, int age){
- this.name = name;
- this.age = age;
- }
- String name;
- int age;
-
- public String toString(){
- return "I am "+name+" , "+age+" years old.";
- }
- }
- /*创建一个修改Collection的线程,实现Runnable接口。不采取任何同步措施。*/
- class ModifyCollectionTask implements Runnable{
- public ModifyCollectionTask(Collection<Student> slist){
- this.slist = slist;
- }
- public void run(){
- // 遍历学生列表,
- for(Student s : slist){
- System.out.println(Thread.currentThread().getName());
- System.out.println(s);
- }
- // 向学生列表添加元素
- slist.add(new Student("Katie", 30));
- }
- Collection<Student> slist;
- }
- class ModifyTest
- {
- public static void main(String[] args)
- { /*由于Vector类是线程安全的动态数组,所以,将集合实现改为Vector*/
- // 使用Vector
- List<Student> sVector = new Vector<Student>();
- sVector.add(new Student("AAA",10));
- sVector.add(new Student("BBB",12));
- sVector.add(new Student("CCC",14));
- sVector.add(new Student("DDD",16));
- sVector.add(new Student("EEE",18));
-
- for(int i=0;i<3;i++){
- new Thread(new ModifyCollectionTask(sVector)).start();
- }
- }
- }
- //为什么还是会抛出ConcurrentModificationException异常。既然迭代器抛出这个异常,肯定是迭代器的问题,我没动迭代器啊。
复制代码 |