package com.stu.cycle;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
* CopyOnWriteArrayList线程安全测试
* @author jj
*
*/
public class CopyOnWrite {
private static int thread_pool_max_num = 10;
private static CopyOnWriteArrayList<String> list = new CopyOnWriteArrayList<String>();
public static void main(String[] args) {
new CopyOnWrite().start();
}
private void start() {
initData();
ExecutorService service = Executors.newFixedThreadPool(thread_pool_max_num);
for(int i=0;i<thread_pool_max_num;i++){
service.execute(new ListRead(list));
service.execute(new ListWrite(list));
}
}
private void initData() {
for(int i=0;i<thread_pool_max_num;i++){
list.add(i+1+"");
}
}
private class ListRead implements Runnable{
private CopyOnWriteArrayList<String> list;
public ListRead(CopyOnWriteArrayList<String> list){
this.list = list;
}
@Override
public void run() {
if(this.list!=null){
for(String str : this.list){
System.out.println(Thread.currentThread().getName()+":"+str);
}
}
}
}
private class ListWrite implements Runnable{
private CopyOnWriteArrayList<String> list;
public ListWrite(CopyOnWriteArrayList<String> list) {
this.list = list;
}
@Override
public void run() {
if(this.list!=null){
this.list.add("xiajibajia");
}
}
}
}
class Poep{
}
CopyOnWriteList线程安全测试
最新推荐文章于 2024-03-11 10:10:05 发布