Java多线程入门3---并行程序基础

1 Synchronous

2 并发Concurrent: 偏重于任务交替执行,且多个任务间可能是串行的 【你有处理多个任务的能力,不一定要同时

3 并行Parallelism: 真正意义上同时执行【你有同时处理多个任务的能力

举例: Java多线程入门3---并行程序基础

你吃饭吃到一半,电话来了,你一直到吃完了以后才去接,这就说明你不支持并发也不支持并行。
你吃饭吃到一半,电话来了,你停了下来接了电话,接完后继续吃饭,这说明你支持并发。

你吃饭吃到一半,电话来了,你一边打电话一边吃饭,这说明你支持并行。


5 临界区: 标示一种公共资源或共享数据,且可被多线程访问,但是每次只能一个线程使用它,其他等待

6 阻塞 Blocking 非阻塞 Non-Blocking :形容线程间互相影响,比如 一个线程占用了临界区,导致其他线程等待挂起,这种情况叫阻塞

7 死锁Deadlock   饥饿Starvation(线程因为种种原因无法获取所需资源,一直无法执行)   活锁Livelock(彼此“谦让”,都主动释放资源给他人使用)

8 并发级别: 阻塞  无饥饿(加线程优先级 排队)   无障碍(全部进入临界区操作,检查到共享数据被修改 立刻回滚)  

                    无锁(全部进入临界区操作,保证一个线程胜出,若失败,循环重试)  无等待 (eg: RCU read-copy-update)