在计算机信息世界里,单机单线程时代没有锁的概念。自从出现了资源竞争,人们才意识到需要对部分场景的执行现场加锁,昭告天下,表明自己的“短暂”拥有(其实对于任何有形或无形的东西,拥有都不可能是永恒的)。
并发编程的bug源头
一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
可重入锁又名递归锁,是指在同一个线程在外层方法获取锁的时候,再进入该线程的内层方法会自动获取锁(前提锁对象得是同一个对象或者class),不会因为之前已经获取过还没释放而阻塞。
上篇文章我们讲述了锁的四种状态,本篇我们来介绍公平锁和非公平锁。顾名思义,公平锁意味着每个线程都有相同的机会去获取锁,而反之非公平锁就是每个线程获取锁的机会不一样。
CAS全称 Compare And Swap(比较与交换),是一种无锁算法。在不使用锁(没有线程被阻塞)的情况下实现多线程之间的变量同步。