一、为什么需要并行
业务要求
http处理多个客户端请求
java虚拟机启动多个线程
进程开销比线程大的多
性能
多线程在多核系统比单线程要好的多
摩尔定律失效
二、几个重要概念
2.1 同步和异步
synchronous,asynchronous
2.2 并发和并行
concurrency,parallelism
2.3 临界区
临界区用来表示一种公共资源或者说是共享数据,可以被多个线程使用。但是每一次,只能有一个线程使用它,一旦临界区资源被占用,其他线程要想使用这个资源,就必须等待。
2.4 阻塞和非阻塞
blocking,non-blocking
阻塞和非阻塞通常用来形容多线程音的相互影响。比如一个线程占用了临界区资源,那么其它所有需要这个资源的线程就必须在这个临界区中进行等待,等待会导致线程挂起。这种情况就是阻塞。此时,如果占用资源的线程一直不愿意释放资源,那么其它所有阻塞在这个临界区上的线程都不能工作。
非阻塞允许多个线程同时进入临界区。
2.5 死锁、饥饿和活锁
deadlock,starvation,livelock
死锁