Java高并发程序设计笔记(2)

读书笔记

2018-06-26

231

0

关于并行的几个重要概念

同步和异步

同步和异步都是针对两个参与者来说的,一个参与者为调用者A(比如主函数),一个参与者为被调用者B(比如被调用方法)

同步是指A调用B时,A必须等待B执行结束返回,才能继续执行。

异步是指A调用B后,B立即返回,A可以继续执行,待B执行完毕,将结果通知A。

并发和并行

并发实际上是多个任务交替执行,只不过切换的频率比较高,宏观上看起来是同时执行的。

并行是真正的多个任务同时执行。

如果只有一个CPU的话,只有并发,并没有实际的并行;多个CPU可以实现并行执行。

并发和并行的执行效果可能是一样的。

临界区

临界区是指包括了共享资源或者数据并且需要保护的部分。

阻塞和非阻塞

阻塞和非阻塞通常用来形容多线程之间的互相影响。

比如如果一个线程占用了临界区资源,其他所有需要这个资源的线程必须在这个临界区中等待。

死锁、饥饿和活锁

死锁,多个线程之间互相持有其他线程所需的资源,互不想让,互相等待。

饥饿,一个或多个线程由于种种原因始终得不到执行。比如优先级太低或者一个线程始终不释放公共资源,导致其他线程无法执行。

活锁,由于谦让,每个线程都主动释放资源,导致都无法得到所有所需的资源,导致无法执行。

 

发表评论

全部评论:0条

Eric

莫等青春散场,才后悔来不及、回不去、得不到

热评文章

推荐文章