对并发的一些理解:为什么需要并发

为什么需要并发?

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

误解和正解:

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

    -并发总能改进性能(并发在CPU有很多空闲时间时能明显改进程序的性能,但当线程数量较多的时候,线程间频繁的调 度切换反而会让系统的性能下降)

    -编写并发程序无需修改原有的设计(目的与时机的解耦往往会对系统结构产生巨大的影响)

    -在使用Web或EJB容器时不用关注并发问题(只有了解了容器在做什么,才能更好的使用容器)

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

    -编写并发程序会在代码上增加额外的开销

    -正确的并发是非常复杂的,即使对于很简单的问题

    -并发中的缺陷因为不易重现也不容易被发现

 -并发往往需要对设计策略从根本上进行修改

当多个线程执行同一个方法的时候,什么时候可能会出现异常结果:

  多个线程共享一块内存区域,在不加任何保护情况下,对其操作;

什么时候可能会得到正确的结果:

  不使用共享内存,每个线程内存空间相互独立;

  多线程共享一块内存区域,但是对这块共享区域加锁访问;