zoukankan      html  css  js  c++  java
  • 请看你离并发编程还有多远

    前言:
    代码简洁与性能高效无法两全其美,本系列文章专注于并发编程,提高性能,本文章是在读 Java Concurrency In Practice时自己总结的一些体会。有理解不正确的地方,还请指出。
     
     
    请回答以下几个问题:
    问题一、你的项目是否运行在多核CPU甚至多CPU的服务器上?
    问题二、你的项目中,是否使用到了线程池?
    问题三、你的项目是否使用到了集群或者用到了分布式框架?
    问题一不用想,任何人都会回答是,那么恭喜你,你离并发编程仅有1米的距离了,已经有必要看看并发编程了。如果你符合以上三个问题的所有条件,那么恭喜你,你离并发编程只有0.1毫米了,你应该好好学习并发编程了,并发已经深深渗人你的项目中,甚至已经开始出现一些莫名其妙的问题,或者你已经在为这些并发引起的性能问题着急了。
     
    或许你不信,你可能会说,我并不了解并发编程,但代码仍然稳定的跑了好几年啊!是的,有时候,并不需要深入研究一门技术,才会使用他。就像一个Java程序员,花上半天时间就能写出一个php程序一样,但为什么那样写,你却不一定了解。
    并发编程也一样,虽然你觉得自己写的代码不存在并发问题,但实际上,你可能已经跨越了并发编程的白线,自己还没有察觉到而已。
    我在读并发编程实战时,有这么一些体会,觉得有必要对并发编程精读。
    1、Java语言出了一些规范(一直都有,只是在并发编程时发现里面对多线程的定义比较宽松),总体意思是说,在缺少同步的代码中,JVM不保证一个线程写入的一个变量值,对另外一个线程可以立即可见,这样,我们的代码中只要涉及到多线程,就要注意并发问题。
    2、在硬件上,CPU的主频提高已经不太现实,CPU厂家也开始使用“多线程技术”或者多CPU技术,这些多线程会尝试将我们的代码并行化,以提高系统性能,并且这些技术在操作系统级别及JVM级别默认都是允许的。
    3、编译器不可靠,我们写的Java语言是不能直接在cpu上面运行的,但经过编译器的编译,我们的代码被“优化”,如果我们不采取合适的同步,在运行时,可能会出现一些“惊喜”。
    如果你也认同我的这些观点,那么,请好好读读 Java并发编程吧,非常不错的一本书。网上有很多可以下载的资源,有chm版的也有中文版的。
     
     
     
     对这类话题感兴趣?欢迎发送邮件至donlianli@126.com
    关于我:邯郸人,擅长Java,Javascript,Extjs,oracle sql。
    更多我之前的文章,可以访问 我的空间
  • 相关阅读:
    Tomcat建立多个应用(Web Server),多个主机,多个站点的方法
    Spring 注解bean默认名称规则
    spring+springMVC,声明式事务失效,原因以及解决办法
    Spring事务失效的原因
    MySQL 对于千万级的大表要怎么优化?
    前端开发利器: Bootstrap + AngularJS
    scrapy爬取段子
    scrapy安装
    xpath和CSS选择器
    pycharm远程登录mysql
  • 原文地址:https://www.cnblogs.com/donlianli/p/3172724.html
Copyright © 2011-2022 走看看