【Java】并发基础知识总结

并发基础知识总结


用并发解决的问题大体上可分为”速度”和”设计可管理性”两种


基本的线程机制

  • 一个线程就是在进程中的一个单一顺序控制流;单个进程可以有多个并发执行的任务,但程序使得每个任务都好像拥有自己的CPU一样,其底层机制是切分CPU时间;在使用线程时,CPU将轮流给每个任务分配其占用时间;而多个CPU则允许程序将线程放在不同CPU上同时执行。
  • 针对每个线程,一个单独的栈空间被分配给其使用

并发和并行的区别

  • 并发性(concurrency),又称共行性,是指能处理多个同时性活动的能力,并发事件之间不一定要同一时刻发生。
  • 并行(parallelism)是指同时发生的两个并发事件,具有并发的含义,而并发则不一定并行。
  • 并发和并行都可以是多个线程;如果多个CPU同时执行,则为并行;如果单个CPU执行,则为并发。
  • 并发是逻辑上的同时发生(simultaneous),而并行是物理上的同时发生
  • 注意是否【同时】及【同时】的发生条件

并发(Concurrency)v.s. 顺序执行(Sequential)
几个例子简单描述一下:

并发:小明正在打游戏,小红给他打电话:小明接了电话,一心一意挂机,打完电话继续游戏。
顺序执行:小明正在打游戏,小红给他打电话:小明继续打游戏直到打完,小明接了小红电话。(小红坚持不懈地打电话给小明!=.=)

并行(Parallelism)v.s. 串行(Serial)

并行:小明正在打游戏,小红给他打电话,响了一声之后,要开始团战了:小明接了小红电话,一边打电话一边打团战,稳的不行。
串行:小明正在打游戏,小红给他打电话,响了一声之后,要开始团战了:小明专心接电话,专心挂机,打完挂了电话再继续打团。


标题

你可能感兴趣的:(java)