• <tr id='kgzRsT'><strong id='kgzRsT'></strong><small id='kgzRsT'></small><button id='kgzRsT'></button><li id='kgzRsT'><noscript id='kgzRsT'><big id='kgzRsT'></big><dt id='kgzRsT'></dt></noscript></li></tr><ol id='kgzRsT'><option id='kgzRsT'><table id='kgzRsT'><blockquote id='kgzRsT'><tbody id='kgzRsT'></tbody></blockquote></table></option></ol><u id='kgzRsT'></u><kbd id='kgzRsT'><kbd id='kgzRsT'></kbd></kbd>

    <code id='kgzRsT'><strong id='kgzRsT'></strong></code>

    <fieldset id='kgzRsT'></fieldset>
          <span id='kgzRsT'></span>

              <ins id='kgzRsT'></ins>
              <acronym id='kgzRsT'><em id='kgzRsT'></em><td id='kgzRsT'><div id='kgzRsT'></div></td></acronym><address id='kgzRsT'><big id='kgzRsT'><big id='kgzRsT'></big><legend id='kgzRsT'></legend></big></address>

              <i id='kgzRsT'><div id='kgzRsT'><ins id='kgzRsT'></ins></div></i>
              <i id='kgzRsT'></i>
            1. <dl id='kgzRsT'></dl>
              1. <blockquote id='kgzRsT'><q id='kgzRsT'><noscript id='kgzRsT'></noscript><dt id='kgzRsT'></dt></q></blockquote><noframes id='kgzRsT'><i id='kgzRsT'></i>
                专注Java教育12年 全国咨询/投诉热线:400-8080-105

                首页 学习攻略 Java培训 Java程序员培训常遇到的一些并发问题

                Java程序员培训常遇到的一些并发问题

                更新时间:2019-11-13 15:39 来源:玩彩网 浏览1178次

                  编写优质的并发代码是一件难度极高的事情。Java语言从首个版本开始内置了对多线程的支持,这一点在当年是非常Ψ了不起的,但是当我们对并发编程有了更深刻的认识和更多的实践后,实现并发编程就有了更多的方案和更好的选择。本文是对并发编程的一点总结和思考,同时也分享了Java5以后的版本中〓如何编写并发代码的一点点经验。Java程序员培训经常遇到的几个并发问题:

                QQ截图20190702161216.jpg

                  为什么需要并发㊣ 

                  并发其实是一种解耦合的策略,它帮助我们把做什么(目标)和什么时↓候做(时机)分开。这样做可以明显改进应用程序的╲吞吐量(获得更多的CPU调度时间)和结构(程序有多个部分在协同工作)。做过JavaWeb开发的人都知道,JavaWeb中的Servlet程序在Servlet容器的支持下采用单实例多线程的工作模式,Servlet容器为☉你处理了并发问题。

                  误解和正解

                  常见的对◆并发编程的误解有以下这些:

                  并发总能改进性能(并发在CPU有很多空闲时间时能明显改进程序的性能,但当线※程数量较多的时候,线程间频繁的调度切换反而会让系统的性能下▓降)-编写并发程序无需修改原有的设计(目的与时机的解耦往往会对系卐统结构产生巨大的影响)-在使用Web或EJB容器时不用关注并发问题(只有了解了容器在做∑ 什么,才能更好的使用容器)

                  下面的这些说法才是对并发客观的认识:

                  编写并发程序会★在代码上增加额外的开销-正确的并发是△非常复杂的,即使对于很简单的问题-并发中的缺陷因为不易重现也不容易被发现-并发往〖往需要对设计策略从根本上进行修改。

                  并发编程的原则和技巧

                  单一职责原则

                  分ζ 离并发相关代码和其他代码(并发【相关代码有自己的开发、修改和调优生命周期)。

                  限制数据作用域

                  两个线程修改共享对象的○同一字段时可能会相互干扰,导致不可预期的行为,解决方案之一是构【造临界区,但是必须限制临界区的数量。

                  使用数据副本

                  数据副本是避免共享数据的好方法,复制出来的对※象只是以只读的方式对待。Java5的java.util.concurrent包中增加一个名为CopyOnWriteArrayList的类,它是List接口的子类型,所以你可以认为它是▆ArrayList的线程安全的版本,它使用了写时复制的方式创建数据副本进行操作来避免对共享数据并发访问而引发的问题①。

                  线程应尽可能独立

                  让线程存在于自己的世界中,不与其他线程№共享数据。有过JavaWeb开发经验的人都知道,Servlet就是以单实例多线程的方式工作,和每个请求相关的数据都是用Servlet子类的service方法(或者是doGet或doPost方法)的参数传入的。只要Servlet中的代码只使用◎局部变量,Servlet就不会导致同步问题。SpringMVC的控制器也是这么做的,从请求中︾获得的对象都是以方法的参数传入而不是作为类的成员,很明显Struts2的做法就正好相反,因此Struts2中作为控制器的Action类都是々每个请求对应一个实例。

                       以上就是玩彩网java学院小编针对“Java程序员培训常遇到的一些并发问题”的内容进行的回答,希望对大家有所帮助,如有疑问,请在线咨询,有专业老师随时为你□服务。

                提交申请后,顾问老师会电∮话与您沟通安排学习

                免费课程推荐 >>
                技术文档推荐♂♂ >>

                返回顶部