synchronized关键字方法或代码块的互斥性来完成实际上的一个原子操作。(方法或代码块在被一个线程调用时,其他线程处于等待状态)所有的Java对象都有一个与synchronzied关联的监视器对象(monitor),允许线程在该监视器对象上进行加锁和解锁操作。a、静态方法:Java类对应的Cl...
分类:
编程语言 时间:
2015-07-12 23:11:11
阅读次数:
260
CocurrentHashMap 作用
HashTable通过对整张表加锁的方式实现并发hash查找与储存,CocurrentHashMapt通过Segment的方式可以实现相同的功能,不过效率更加高,在jdk1.6的时候,CocuentHashMap有弱一致性的问题,不过在jdk1.7的时候,这个问题已经修复了。所以是并发安全性还是性能都是非常高的。接下来我尝试基于jdk1.7...
分类:
其他好文 时间:
2015-07-11 15:13:05
阅读次数:
146
单例模式的作用:可以保证在程序运行过程,一个类只有一个实例,而且这个实例易于供外界访问。永远只分配一次内存给这个类。由于在调用alloc方法的时候,都会调用allocWithZone,所以要重写这个方法,保证只分配一次内存。 dispatch_once这个方法可以保证只调用一次,并且会自动加锁,线程...
分类:
其他好文 时间:
2015-07-10 20:46:48
阅读次数:
145
乐观锁思路 这个时候,我们就可以讨论一下“乐观锁”的思路了。乐观锁,是相对于“悲观锁”采用更为宽松的加锁机制,大都是采用带版本号(Version)更新。实现就是,这个数据所有请求都有资格去修改,但会获得一个该数据的版本号,只有版本号符合的才能更新成功,其他的返回抢购失败。这样的话,我们就不需要考虑....
分类:
其他好文 时间:
2015-07-07 19:23:32
阅读次数:
135
1 /* 2 之所以在Instantialize函数里面对pInstance 是否为空做了两次判断,因为该方法调用一次就产生了对象,pInstance == NULL 大部分情况下都为false,如果按照原来的方法,每次获取实例都需要加锁,效率太低。 3 而改进的方法只需要在第一次调用的时候加锁,....
分类:
编程语言 时间:
2015-07-07 19:07:17
阅读次数:
125
一、错误描述: fuyung@fuyung-All-Series:~$ sudo apt-get update E: 无法获得锁 /var/lib/apt/lists/lock - open (11: 资源暂时不可用) E: 无法对目录 /var/lib/apt/lists/ 加锁 解决办法: fuyung@fuyung-All-...
分类:
系统相关 时间:
2015-07-06 18:15:38
阅读次数:
178
synchronized ? ? ??用来给对象和方法或者代码块加锁,当它锁定一个方法或者一个代码块的时候,同一时刻最多只有一个线程执行这段代码。当两个并发线程访问同一个对象object中的这个加锁同步代码块时,一个时...
分类:
其他好文 时间:
2015-07-06 08:56:18
阅读次数:
199
【共享锁】【读锁】共享锁(Share locks 简记为S锁)【独占锁】(事务结束释放)【写锁】排它锁(Exclusive locks 简记为X锁)【更新锁】(避免共享锁的死锁情况)【封锁协议 】 1 级封锁协议是:事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。事务结束包括正常结束(....
分类:
数据库 时间:
2015-07-04 00:49:20
阅读次数:
154
一个、Linux多线程编程技术高效开发参考博文:http://www.ibm.com/developerworks/cn/linux/l-cn-mthreadps/几个环境:1、递归锁2、自己主动复位条件变量3、pthread_cond_wait运行前加锁,运行时会解锁。成功后会加锁。运行之后解锁4...
分类:
其他好文 时间:
2015-07-02 17:17:58
阅读次数:
159
Page 54
另一个奇怪的问题是:我们使用了_left和_right来命名.下划线是怎么回事?我们并没有计划在加锁时使用这两个变量.我们仅仅只想要得到它.因此,Rust会警告我们并没有使用这些值.通过使用下划线,我们告诉Rust这就是我们想要的,它就不会抛出警告了.
如何释放锁呢?_left和_right离开自己的作用域之后就会自动释放.
let table = Arc::...
分类:
其他好文 时间:
2015-07-02 14:10:39
阅读次数:
129