lay0906的ChinaUnix博客
lay0906
全部博文(31)
zk文档翻译(1)
2015年(2)
2014年(29)
Bsolar
avelcon
beng616
sytpb
lsk_lish
kgeesutq
backchen
cu博客助
发布时间:2014-09-02 21:49:55
在两种情况下需要同步,一是访问临届资源,二是线程或进程间合作。这两种对应Java语言的API分别是锁跟wait/notify。同步进入临界区通常需要满足4个条件:1. 空闲让进,这是显然的2. 忙则等待,这也是显然的3. 有限等待,这是防止线程死等,synchronized并不支持,并发包中的Lock支持4. 让权等待,不能进入.........【阅读全文】
发布时间:2014-09-02 20:16:14
如果一些变量只有线程自己访问,那么就可以使用ThreadLocal,这是一种通过线程封闭来实现线程安全的一种方式。ThreadLocal的用法跟HashMap非常像,一个set/get,还有一个initialValue方法,使用非常简洁。 可以将其想象成Map,但多少有点不同。比如HashMap是key-->value,但ThreadLocal是这样的(Thread,.........【阅读全文】
发布时间:2014-09-02 16:23:18
Java之前有stop跟suspend方法从外部强制终止跟暂停一个线程。但是这两个方法都存在一个相当严重的问题,因为这样它们都被废弃了。stop:一个线程被外部强行stop后会解锁所有监视器,导致阻塞该监视器的线程被唤醒。这可能导致被唤醒的线程使用一些状态不完全的对象。因为这些对象本来可能是要在被终止线程进.........【阅读全文】
发布时间:2014-09-01 17:13:13
当一个资源可以分成很多部分的时候,如果对每个部分使用不同的锁,那么资源的争用就大大的降低,这是使用分离锁的理由。并发包中的ConcurrentHashMap是分离锁的典型例子。 一个简单的使用分离锁的map可以很快的被写出来:点击(此处)折叠或打开packa.........【阅读全文】
发布时间:2014-08-31 20:26:48
减少对资源的争用,是提高并发性能的关键。在并发访问中。多个读并发实际不存在线程安全问题,读写,写写并发才是线程安全问题的根源。所以读写锁应运而生。度写锁的使用并不一定都能提高并发性能,这取决于应用场景。如果写多读少,反而会造成性能的下降,因为读写锁显然比普通锁更复杂。在读多写少.........【阅读全文】
登录 注册