并发理论

1,并发:一种状态。多个程序在同一时刻只能执行一个,需要在一段时间内才能先后执行完所有程序。
   并行:一种状态。多个程序在同一时刻可以同时执行。
   竞争:一种状态。在没获得共享资源前,多个程序同时或依次获取资源的行为状态。

2,并发特点:有共享资源;先后执行所有程序(可能会先后获得该共享资源,比如单核cpu)。
   并行特点:无共享资源;同时执行所有程序(比如多核cpu)。
   竞争特点:都还未得到共享资源;不一定同时执行。

3,并发可能导致竞争,也可能不会(比如两男追一美女,其中一个放弃竞争)。
   并发可能导致线程不安全。

4,并发条件:1,有共享资源;2,同一时刻有多个程序获取共享资源。

5,数据竞争:
   竞争条件:

6,导致线程不安全的因素:状态。

7,状态:即数据。这种数据存储在状态变量中。
   状态特点:内部可变,外部共享。

8,何谓线程安全:单线程下,所见即所得。多线程下,连续正确的执行。多线程的隐患要少于单线程。

9,如何保证线程安全:
   无状态;
   有一个状态时(使用final常量;不共享;volatile;原子对象);
   有多个状态时(避免状态依赖;同步)。

10,原子性:单独的,不可再分割的操作或过程。

11,可见性:A线程在同步块区域所做的事(指对共享对象的状态修改),B线程在获得锁之后,也可看见。

12,重排序:对于至少两个操作,操作的顺序本来是从A到B,但在多线程环境下,可能会变为先执行B,然后再执行A。

13,可重入性:A线程进入锁对象的同步块之后,可以在不退出该块的情况下,继续进入相同的锁对象的不同同步块。

14,锁:是一个对象。可以锁住一个同步块。具有互斥性,原子性,可见性,可重入性,避免重排序。

15,同步:加锁或者使用volatile。

16,volatile:是一种弱同步。本意为易挥发的、易变的。

猜你喜欢

转载自igoder.iteye.com/blog/1968330