`
donlianli
  • 浏览: 336443 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
Group-logo
Elasticsearch...
浏览量:216642
社区版块
存档分类
最新评论

请看你离并发编程还有多远

阅读更多
前言:
代码简洁与性能高效无法两全其美,本系列文章专注于并发编程,提高性能,本文章是在读 Java Concurrency In Practice时自己总结的一些体会。有理解不正确的地方,还请指出。
 
 
请回答以下几个问题:
问题一、你的项目是否运行在多核CPU甚至多CPU的服务器上?
问题二、你的项目中,是否使用到了线程池?
问题三、你的项目是否使用到了集群或者用到了分布式框架?
问题一不用想,任何人都会回答是,那么恭喜你,你已经有必要看看并发编程了。如果你符合以上三个问题的所有条件,那么恭喜你,你应该好好学习并发编程了,并发已经深深渗人你的项目中,甚至已经开始出现一些莫名其妙的问题,或者你已经在为这些并发引起的性能问题着急了。
 
或许你不信,你可能会说,我并不了解并发编程,但代码仍然稳定的跑了好几年啊!是的,有时候,并不需要深入研究一门技术,才会使用他。就像一个Java程序员,花上半天时间就能写出一个php程序一样,但为什么那样写,你却不一定了解。
并发编程也一样,虽然你觉得自己写的代码不存在并发问题,但实际上,你可能已经跨越了并发编程的白线,只是自己还没有察觉到而已。
我在读并发编程实战时,有这么一些体会,觉得所有的编程人员都有必要对并发编程精读。
1、Java语言出了一些规范(一直都有,只是在并发编程时发现里面对多线程的定义比较宽松),总体意思是说,在缺少同步的代码中,JVM不保证一个线程写入的一个变量值,对另外一个线程立即可见,这样,我们的代码中只要涉及到多线程共享数据,就要注意并发问题。
2、在硬件上,CPU的主频提高已经不太现实,CPU厂家也开始使用“多线程技术”或者多CPU技术,这些多线程会尝试将我们的代码并行化,以提高系统性能,并且这些技术在操作系统级别及JVM级别默认都是允许的,这样,就连硬件也不敢保证你多线程的代码按照你串行的模式运行。
3、编译器不可靠,我们写的Java语言是不能直接在cpu上面运行的,但经过编译器的编译,我们的代码被“优化”,如果我们不采取合适的同步,在运行时,可能会出现一些“惊喜”。
如果你也认同我的这些观点,那么,请好好读读 Java并发编程吧,非常不错的一本书。网上有很多可以下载的资源,有chm版的也有中文pdf版的。
 
 
 对性能感兴趣?请查看我的并发编程 系列文章,持续更新中
 对这类话题感兴趣?欢迎发送邮件至donlianli@126.com
关于我:邯郸人,擅长Java,Javascript,Extjs,oracle sql。
更多我之前的文章,可以访问 我的空间
 
0
3
分享到:
评论
1 楼 wxl24life 2013-08-08  
引用
1、Java语言出了一些规范(一直都有,只是在并发编程时发现里面对多线程的定义比较宽松),总体意思是说,在缺少同步的代码中,JVM不保证一个线程写入的一个变量值,对另外一个线程立即可见,这样,我们的代码中只要涉及到多线程共享数据,就要注意并发问题。


同步机制不只是为了保证共享数据的可见性,也在保证操作的原子性。这两方面都需要考虑到。

相关推荐

Global site tag (gtag.js) - Google Analytics