java给不同步的集合加上同步锁
给非同步的集合加锁:
class MyCollections{//创建工具类,提供对外访问方法
    public static list synList(List list){
        return new MyList(list);
    }
    private Class MyList implements List{
        private List list;
        private static final Object lock = new Object();
        MyList(List list){
            this.list = list;
        }
        public boolean add(Object obj){
            synchronized(lock)
            {
            return list.add(obj);
            }
        }
        public boolean remove(Object obj){
            synchronized(lock)
            {
            return list.remove(obj);
            }
        }
    }
}
List list = new ArrayList(); //非同步的
list = MyCollections.synList(list);//返回一个同步的list
此过程就是 Coolections 工具类中的 synchronizedList 方法
java给不同步的集合加上同步锁的更多相关文章
- java se系列(十二)集合
		1.集合 1.1.什么是集合 存储对象的容器,面向对象语言对事物的体现,都是以对象的形式来体现的,所以为了方便对多个对象的操作,存储对象,集合是存储对象最常用的一种方式.集合的出现就是为了持有对象.集 ... 
- java多线程中并发集合和同步集合有哪些?区别是什么?
		java多线程中并发集合和同步集合有哪些? hashmap 是非同步的,故在多线程中是线程不安全的,不过也可以使用 同步类来进行包装: 包装类Collections.synchronizedMap() ... 
- 【JAVA并发编程实战】3、同步容器
		同步容器包括Vector和Hashtable,还有一些由Collections.synchronizedXxx等工厂方法创建的 1.同步容器类的问题 同步容器类都是线程安全的,但是有些时候还是要客户端 ... 
- java笔记--关于线程同步(7种同步方式)
		关于线程同步(7种方式) --如果朋友您想转载本文章请注明转载地址"http://www.cnblogs.com/XHJT/p/3897440.html"谢谢-- 为何要使用同步? ... 
- java笔记--关于线程同步(5种同步方式)【转】
		为何要使用同步? java允许多线程并发控制,当多个线程同时操作一个可共享的资源变量时(如数据的增删改查), 将会导致数据不准确,相互之间产生冲突,因此加入同步锁以避免在该线程没有完 ... 
- Java多线程02(线程安全、线程同步、等待唤醒机制)
		Java多线程2(线程安全.线程同步.等待唤醒机制.单例设计模式) 1.线程安全 如果有多个线程在同时运行,而这些线程可能会同时运行这段代码.程序每次运行结果和单线程运行的结果是一样的,而且其他的变量 ... 
- Effective Java 第三版——79.  避免过度同步
		Tips 书中的源代码地址:https://github.com/jbloch/effective-java-3e-source-code 注意,书中的有些代码里方法是基于Java 9 API中的,所 ... 
- 013-并发编程-java.util.concurrent.locks之-AbstractQueuedSynchronizer-用于构建锁和同步容器的框架、独占锁与共享锁的获取与释放
		一.概述 AbstractQueuedSynchronizer (简称AQS),位于java.util.concurrent.locks.AbstractQueuedSynchronizer包下, A ... 
- 《java并发编程实战》读书笔记4--基础构建模块,java中的同步容器类&并发容器类&同步工具类,消费者模式
		上一章说道委托是创建线程安全类的一个最有效策略,只需让现有的线程安全的类管理所有的状态即可.那么这章便说的是怎么利用java平台类库的并发基础构建模块呢? 5.1 同步容器类 包括Vector和Has ... 
随机推荐
- strom的使用02
			1.grouping分组策略 stream grouping就是用来定义一个stream应该如果分配给Bolts上面的多个Tasks. storm里面有6种类型的stream grouping: 1. ... 
- 【转】}目前比较全的CSS重设(reset)方法总结
			在当今网页设计/开发实践中,使用CSS来为语义化的(X)HTML标记添加样式风格是重要的关键.在设计师们的梦想中都存在着这样的一个完美世界:所有的浏览器都能够理解和适用多有CSS规则,并且呈现相同的视 ... 
- React 快速入门小记
			大约半个月前,我一直在思考一个问题,Angular.React 和 Vue,究竟该学什么? 听取了几位前辈的意见,也综合考虑了各方面的原因,最终选择了 React,希望我"没有选错" ... 
- ubuntu服务管理
			uRedhat 提供了chkconfig这个命令来管理系统在不同运行级别下的服务开启/关闭: chkconfig ServiceName on/off 并可以用chkconfig --list(两个杠 ... 
- 你的指纹还安全吗? - BlackHat 2015 黑帽大会总结 day 2
			你的指纹还安全吗? 0x03 FINGERPRINTS ON MOBILE DEVICES: ABUSING AND LEAKING speaker是来自FireEye的Wei Tao和Zhang ... 
- PBOC金融IC卡,卡片与终端交互的13个步骤,简介-第二组(转)
			四:脱机数据认证-可选终端进行脱机数据认证来,认证卡片.记住:对于某个事情,终端与卡片谁单独也说了不算,要二者都能干才能干. 终端依据卡片(AIP)和终端(终端性能)的支持情况,决定是否使用及使用哪种 ... 
- sql 删除数据库表  外键
			--/第1步**********删除所有表的外键约束*************************/ DECLARE c1 cursor for select 'alter table ['+ ... 
- HTML5 十大新特性(二)——表单新特性
			H5的表单新特性可以分为两大类. 一.10个input的type值 1.email:邮件输入域,在表单提交时提供简单的邮箱格式验证,并弹出一个提示窗口. 2.url:地址输入域,在表单提交时提供简单的 ... 
- 支撑双十一的,不仅仅是AliSQL,也不仅仅是Oceanbase
			全棉时代,作为稳健医疗集团的全资子公司,传承了稳健医疗集团在医用棉制品行业20年的专业技术和生产经验,以其独创的 "全棉水刺无纺布专利工艺"为核心技术载体,成功实现了医用产品向民用 ... 
- Oculus安装问题
			1.必须FQ,可采用蓝灯,或其他vpn 2.Your computer doesn't meet Rift's recommended specifications 如果某些硬件达不到推荐配置(比如我 ... 
