集合实现同步 : Collections.synchronizedXXX

来源:互联网 发布:如何手机淘宝购物 编辑:程序博客网 时间:2024/05/17 07:36


final List<String> list = Collections.synchronizedList(new ArrayList<String>());

上边方法返回一个线程同步的list对象,即 :

当有一个线程获取到该对象的锁后,那么其他线程无论是否使用syn同步块,在调用add,remove等方法时,都会等待获取锁的线程执行完毕后才执行;



例子 :

//final List<String> list = new ArrayList<String>();final List<String> list = Collections.synchronizedList(new ArrayList<String>());new Thread(){public void run() {synchronized (list) {System.out.println("get lock");try {Thread.sleep(1000);} catch (InterruptedException e) {};list.add("2");System.out.println("list 1 :"+list.size());}};}.start();new Thread(){public void run() {list.add("2");System.out.println("list 2 :"+list.size());};}.start();


1 0
原创粉丝点击