java 多线程 性能_java 多线程性能调整

现在已经很少有人自己写线程池了, jdk5 之后自带的线程池已经可以满足日常的多种需求

对于多线程通常我们考虑两个点

1. 如何让cpu工作量饱和

2. 线程过多时多读在多个线程之间轮询会带来的性能损耗

指导思想很简单

对于cpu密集型的应用程序, 尽量保证线程池大小=cpu的内核数

对于IO密集型的应用程序, 要按照实际情况适当>cpu内核数

要尽量避免使用同步(synchronization) 和 volatile 关键字

synchronization 的工作方式简单粗暴, 同一个时间内, 当锁相同时只能有一个线程进入代码块进行处理

volatile 实际上并不能帮助你处理线程安全问题,它只是要求每个线程在访问这个变量时都会去主内存中读取这个变量

用volatile修饰的变量,线程在每次使用变量的时候,都要实时回写给主内存,而不是操作变量的拷贝, 而且这个关键字由于放弃使用cpu寄存器会带来大量的性能开销

关于volatile关键字与线程安全之间的关系请参阅

http://lizhe.name.csdn.net/node/94

不过我们上面的内容有点跑题了 :P

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值