并行

同步 异步

并行

并发

阻塞 非阻塞

死锁Deadlock  饥饿Starvation 活锁Livelock

饥饿:一个线程拿着关键资源不释放,其他线程需要这个资源而无法运行,但是在未来的一段时间内,资源会被释放。

活锁:秉着“谦让”原则,线程主动释放资源给对方,那么资源就会在两个线程之间跳动,而没有一个线程同时拥有所有资源而正常运行。

并发级别:

阻塞

无饥饿:如果线程之间是有优先级的,那么线程调度的时候总是会倾向于满足高优先级的线程。也就是说,对于同一个资源的分配,是不公平的。锁也分公平锁和非公平锁,对于非公平锁来说,系统允许高优先级的线程插队。这样就有可能导致低优先级的线程产生饥饿。但是如果是公平锁,满足先来后到,那么饥饿就不会产生,不管新来的线程优先级多高,要想获得资源,就必须乖乖排队。这样所有的线程都有机会执行。

无障碍 :无锁:无等待:

两个重要的定理

Amdahl Gustafson

JVM内存模型

如何保证并发程序下的数据访问一致性和安全性

原子性

可见性

有序性

原文地址:https://www.cnblogs.com/lin7155/p/13710418.html