安装基本实现技术来看,Java中的锁实现互斥执行也就只有两类
1.利用阻塞
典型的实现就是synchronized的方式,这种方式就是jvm基本实现的方式,当一个线程获得锁之后切没有释放锁,那么第二个线程尝试获得锁将失败,加入等待队列,同时让出本次线程的时间片的调度,让其他线程执行。产生一个被阻塞的表象,其内部其实已经没有在执行。
2.利用自旋
利用cas原子操作构建等待队列,让未获得锁的线程一直死循环地重试获得锁,这种方式,没有产生线程的调度,但感觉比较浪费cpu计算资源。
安装基本实现技术来看,Java中的锁实现互斥执行也就只有两类
1.利用阻塞
典型的实现就是synchronized的方式,这种方式就是jvm基本实现的方式,当一个线程获得锁之后切没有释放锁,那么第二个线程尝试获得锁将失败,加入等待队列,同时让出本次线程的时间片的调度,让其他线程执行。产生一个被阻塞的表象,其内部其实已经没有在执行。
2.利用自旋
利用cas原子操作构建等待队列,让未获得锁的线程一直死循环地重试获得锁,这种方式,没有产生线程的调度,但感觉比较浪费cpu计算资源。
© 著作权归作者所有