线程的基本概念
1. 同步(synchronize)
同步可以理解为:程序按照代码的顺序从头执行到尾,必须等待执行完这行代码才能执行下面的代码。
2. 异步(asynchronize)
异步可以理解为:程序在执行过程中开启了多个线程,不必非要等待这行代码执行完才可以执行下一行代码,不同线程的代码是可以同时执行的。
3. 并发(concurrency)
多个任务看上去同时执行,其实是cpu分配一段时间给这个线程,然后又分配一段时间给其它线程。
4. 并行(parallelism)
并行是真正的同时执行。
5. 临界区
多个线程可能会有共享的数据,这些数据可能会有线程安全问题,所以同一时刻只能有一个线程拥有,其它线程必须等待。
6. 阻塞(blocking)
当一个线程占有临界区的资源,其它所需要这个资源的线程必须等待,等待会导致线程挂起,这种情况就叫阻塞。
7. 非阻塞(non-blocking)
线程不会妨碍其它线程执行,所有线程都会尝试不断执行
8. 死锁(deadLock)
线程所需要的资源互相占用,互相等待的状态。比如:A需要B占有的资源,B需要A占有的资源,它们都会互相等待下去
9. 活锁(liveLock)
线程所需要的资源互相占用,但是它们会释放自己占用的资源,然后再去拿自己需要的资源,一直处于互相‘谦让’的状态。比如:两个人对面,都一直互相让路
10. 饥饿(starvation)
线程因为某种原因,一直无法获得所需要的资源,导致一直无法执行。
实时内容请关注微信公众号,公众号与博客同时更新:程序员星星
![](https://img.haomeiwen.com/i3417910/7217e30c63eeed4b.jpg)
网友评论