并发编程相关概念

138 阅读2分钟

并发编程优缺点及相关概念。

    上一篇并发编程相关概念    ←||→    下一篇如何创建线程及线程状态

并发编程优缺点

优点

摩尔定律历时半个世纪已不再有效,单位面积的集成电板所堆砌晶体管数量已达瓶颈,采用将多个计算单元整合到一起的方案,也就是当下的多核cpu。通过并发编程可以压榨cpu算力,从而提升性能。

缺点
  1. 频繁切换上下文

    cpu每次切换上下文时,需要保存当前的状态,以便能够进行恢复先前状态,而这个切换时非常损耗性能,过于频繁反而无法发挥出多线程编程的优势。

  2. 线程安全

    多线程编程中要求线程通信,而共享资源就是临界区,稍微不注意就会出现死锁的情况,一旦产生死锁就会造成系统功能不可用。


相关概念

线程&进程

进程是线程的集合,线程是程序执行的最小单元。

同步异步

同步和异步通常用来形容一次方法调用。同步方法调用一开始,调用者必须等待被调用的方法结束后,调用者后面的代码才能执行。而异步调用,指的是,调用者不用管被调用方法是否完成,都会继续执行后面的代码,当被调用的方法完成后会通知调用者。比如说顺序结构就是同步调用。发送邮件一般都是异步调用。

并发与并行

并发指的是多个任务一起开始执行,执行期间多个任务交替进行,而并行则是指真正意义上的同时进行。java多线程是并发操作。

阻塞和非阻塞

阻塞和非阻塞通常用来形容多线程间的相互影响,比如一个线程占有了临界区资源,那么其他线程需要这个资源就必须进行等待该资源的释放,会导致等待的线程挂起,这种情况就是阻塞。

而非阻塞就恰好相反,它强调没有一个线程可以阻塞其他线程,所有的线程都会尝试地往前运行。

临界区

临界区或者说临界资源用来表示共享数据,可以被多个线程使用。但是当线程想使用临界区资源时,一旦临界区资源被另一个线程占有,那么其他线程必须等待。