Java多线程编程实战指南读书笔记二
线程同步机制线程同步机制一套用于协调线程间的数据访问及活动的机制,该机制用于保障线程安全以及实现这些线程的共同目标。广义上讲,Java提供的线程同步机制包括,锁、volatile关键字、final关键字、static关键字以及一些相关的API。 锁线程安全产生的前提是多个线程并发访问共享变量、共享资源。使用锁保障线程安全的思路是将多个线程对共享数据的并发访问转换为串行访问。 使用锁保障线程安全的原理:一个线程在访问共享数据之前需要请求获得相应锁(锁的获得),一个锁同一时间只能被一个线程持有。只有持有锁的线程才能访问共享变量。在线程持有锁之后到释放锁这段时间所执行的代码被称为临界区。因此,共享数据只允许在临界区内进行访问,临界区一次只能被一个线程执行。 锁的性质:锁具有排他性,即一个锁一次只能被一个线程持有。因此这种锁被称为排他锁或者互斥锁。 锁的划分: 内部锁:通过synchronized关键字实现的 显式锁:通过java.concurrent.locks.Lock接口实现的。
