lay0906的ChinaUnix博客
lay0906
全部博文(31)
zk文档翻译(1)
2015年(2)
2014年(29)
Bsolar
avelcon
beng616
sytpb
lsk_lish
kgeesutq
backchen
cu博客助
发布时间:2014-09-05 15:43:06
在JDK1.6之前Java内置的synchronized关键字是有操作系统内置的互斥锁实现,而获取互斥锁需要系统调用,系统调用又是个费时的操作,所以JDK1.5中的synchronized比起并发包中Lock性能要差不少。到了1.6引入了偏向锁、轻量级锁、自适应自旋锁等对synchronized进行了优化,从而让synchronized的性能得到了极大的提高,已.........【阅读全文】
发布时间:2014-09-04 12:49:26
通过多个线程并发自然能提高程序的性能,但无节制的创建线程,却会使程序的性能与稳定性大大的降低。首先,创建跟维持一个线程的生命周期都需要消耗资源。其次,一个系统能够创建的线程数受到系统资源的限制。对于一些网络程序,如果采用每请求每线程的话,当请求数达到一个上限时,系统性能会急剧恶化,甚至崩溃。.........【阅读全文】
发布时间: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后会解锁所有监视器,导致阻塞该监视器的线程被唤醒。这可能导致被唤醒的线程使用一些状态不完全的对象。因为这些对象本来可能是要在被终止线程进.........【阅读全文】
登录 注册