Chinaunix首页 | 论坛 | 博客
  • 博客访问: 79459
  • 博文数量: 31
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 340
  • 用 户 组: 普通用户
  • 注册时间: 2013-04-02 20:25
文章分类

全部博文(31)

文章存档

2015年(2)

2014年(29)

我的朋友

发布时间:2014-09-05 15:43:06

  在JDK1.6之前Java内置的synchronized关键字是有操作系统内置的互斥锁实现,而获取互斥锁需要系统调用,系统调用又是个费时的操作,所以JDK1.5中的synchronized比起并发包中Lock性能要差不少。到了1.6引入了偏向锁、轻量级锁、自适应自旋锁等对synchronized进行了优化,从而让synchronized的性能得到了极大的提高,已.........【阅读全文】

阅读(850) | 评论(0) | 转发(0)

发布时间:2014-09-04 12:49:26

  通过多个线程并发自然能提高程序的性能,但无节制的创建线程,却会使程序的性能与稳定性大大的降低。首先,创建跟维持一个线程的生命周期都需要消耗资源。其次,一个系统能够创建的线程数受到系统资源的限制。对于一些网络程序,如果采用每请求每线程的话,当请求数达到一个上限时,系统性能会急剧恶化,甚至崩溃。.........【阅读全文】

阅读(883) | 评论(0) | 转发(0)

发布时间:2014-09-02 21:49:55

   在两种情况下需要同步,一是访问临届资源,二是线程或进程间合作。这两种对应Java语言的API分别是锁跟wait/notify。同步进入临界区通常需要满足4个条件:1. 空闲让进,这是显然的2. 忙则等待,这也是显然的3. 有限等待,这是防止线程死等,synchronized并不支持,并发包中的Lock支持4. 让权等待,不能进入.........【阅读全文】

阅读(857) | 评论(0) | 转发(0)

发布时间:2014-09-02 20:16:14

   如果一些变量只有线程自己访问,那么就可以使用ThreadLocal,这是一种通过线程封闭来实现线程安全的一种方式。ThreadLocal的用法跟HashMap非常像,一个set/get,还有一个initialValue方法,使用非常简洁。 可以将其想象成Map,但多少有点不同。比如HashMap是key-->value,但ThreadLocal是这样的(Thread,.........【阅读全文】

阅读(1066) | 评论(0) | 转发(0)

发布时间:2014-09-02 16:23:18

   Java之前有stop跟suspend方法从外部强制终止跟暂停一个线程。但是这两个方法都存在一个相当严重的问题,因为这样它们都被废弃了。stop:一个线程被外部强行stop后会解锁所有监视器,导致阻塞该监视器的线程被唤醒。这可能导致被唤醒的线程使用一些状态不完全的对象。因为这些对象本来可能是要在被终止线程进.........【阅读全文】

阅读(849) | 评论(0) | 转发(0)
给主人留下些什么吧!~~
留言热议
请登录后留言。

登录 注册