非线程安全的java.util.ArrayList类
Main.java
1 | import java.util.ArrayList; |
WriterThread.java
1 | import java.util.List; |
ReaderThread.java
1 | import java.util.List; |
result
1 | Exception in thread "ReaderThread" java.util.ConcurrentModificationException |
利用Collections.synchronizedList方法所进行的同步
Main.java
1 | import java.util.ArrayList; |
ReaderThread.java
1 | import java.util.List; |
使用copy-on-write的java.util.concurrent.CopyOnWriteArrayList类
Main.java
1 | import java.util.List; |
比较
使用copy-on-write时,每次执行“写”操作都会执行复制。因此,程序频繁执行“写”操作时,如果使用CopyOnWriteArrayList,会比较花费时间。但如果写操作比较少,而读操作频率非常高时,使用CopyOnWriteArrayList是非常棒的。