Java多线程入门3---并行程序基础
1 Synchronous
2 并发Concurrent: 偏重于任务交替执行,且多个任务间可能是串行的 【你有处理多个任务的能力,不一定要同时】
3 并行Parallelism: 真正意义上同时执行【你有同时处理多个任务的能力】
举例:
你吃饭吃到一半,电话来了,你一直到吃完了以后才去接,这就说明你不支持并发也不支持并行。
你吃饭吃到一半,电话来了,你停了下来接了电话,接完后继续吃饭,这说明你支持并发。
你吃饭吃到一半,电话来了,你一边打电话一边吃饭,这说明你支持并行。
5 临界区: 标示一种公共资源或共享数据,且可被多线程访问,但是每次只能一个线程使用它,其他等待
6 阻塞 Blocking 非阻塞 Non-Blocking :形容线程间互相影响,比如 一个线程占用了临界区,导致其他线程等待挂起,这种情况叫阻塞
7 死锁Deadlock 饥饿Starvation(线程因为种种原因无法获取所需资源,一直无法执行) 活锁Livelock(彼此“谦让”,都主动释放资源给他人使用)
8 并发级别: 阻塞 无饥饿(加线程优先级 排队) 无障碍(全部进入临界区操作,检查到共享数据被修改 立刻回滚)
无锁(全部进入临界区操作,保证一个线程胜出,若失败,循环重试) 无等待 (eg: RCU read-copy-update)