10007---关于Java并发编程的总结和思考
2016-07-04 23:22
633 查看
原文
编写优质的并发代码是一件难度极高的事情。Java语言从第一版本开始内置了对多线程的支持,这一点在当年是非常了不起的,但是当我们对并发编程有了更深刻的认识和更多的实践后,实现并发编程就有了更多的方案和更好的选择。本文是对并发编程的一点总结和思考,同时也分享了Java
5以后的版本中如何编写并发代码的一点点经验。
并发其实是一种解耦合的策略,它帮助我们把做什么(目标)和什么时候做(时机)分开。这样做可以明显改进应用程序的吞吐量(获得更多的CPU调度时间)和结构(程序有多个部分在协同工作)。做过Java Web开发的人都知道,Java Web中的Servlet程序在Servlet容器的支持下采用单实例多线程的工作模式,Servlet容器为你处理了并发问题。
最常见的对并发编程的误解有以下这些:
-编写并发程序会在代码上增加额外的开销
-正确的并发是非常复杂的,即使对于很简单的问题
-并发中的缺陷因为不易重现也不容易被发现
-并发往往需要对设计策略从根本上进行修改
分离并发相关代码和其他代码(并发相关代码有自己的开发、修改和调优生命周期)。
编写优质的并发代码是一件难度极高的事情。Java语言从第一版本开始内置了对多线程的支持,这一点在当年是非常了不起的,但是当我们对并发编程有了更深刻的认识和更多的实践后,实现并发编程就有了更多的方案和更好的选择。本文是对并发编程的一点总结和思考,同时也分享了Java
5以后的版本中如何编写并发代码的一点点经验。
为什么需要并发
并发其实是一种解耦合的策略,它帮助我们把做什么(目标)和什么时候做(时机)分开。这样做可以明显改进应用程序的吞吐量(获得更多的CPU调度时间)和结构(程序有多个部分在协同工作)。做过Java Web开发的人都知道,Java Web中的Servlet程序在Servlet容器的支持下采用单实例多线程的工作模式,Servlet容器为你处理了并发问题。
误解和正解
最常见的对并发编程的误解有以下这些:-并发总能改进性能(并发在CPU有很多空闲时间时能明显改进程序的性能,但当线程数量较多的时候,线程间频繁的调度切换反而会让系统的性能下降) -编写并发程序无需修改原有的设计(目的与时机的解耦往往会对系统结构产生巨大的影响) -在使用Web或EJB容器时不用关注并发问题(只有了解了容器在做什么,才能更好的使用容器)下面的这些说法才是对并发客观的认识:
-编写并发程序会在代码上增加额外的开销
-正确的并发是非常复杂的,即使对于很简单的问题
-并发中的缺陷因为不易重现也不容易被发现
-并发往往需要对设计策略从根本上进行修改
并发编程的原则和技巧
单一职责原则
分离并发相关代码和其他代码(并发相关代码有自己的开发、修改和调优生命周期)。
相关文章推荐
- java List集合记录 ArrayList和LinkedList的区别
- java学习——静态方法和非静态方法
- Java内存区域划分、内存分配原理
- struts2文件下载
- struts2标签 截取字符串 <s:if test=""></if>判断
- jdbcTemplate 实现插入一条数据后吗,返回id
- Eclipse部署springweb项目,context加载两次解决办法。
- 匿名内部类new Runnable()
- Java CopyOnWriteArrayList详解
- Java 内存区域和GC机制
- Spring中资源文件
- springmvc 启动错误java.lang.IllegalArgumentException
- Java之序列化
- Java多线程 之 wait、notifyAll(十二)
- Spring AOP 原理分析 part1
- java在dos中设置环境变量和重定向
- io的学习之六-----缓冲区
- io的学习之六-----缓冲区
- io的学习之六-----缓冲区
- io的学习之六-----缓冲区