java中的锁
菜丸
这个作者很懒,什么都没留下…
展开
-
【面试高频!】数据库事务/事务的作用/数据库事务ACID属性 / 特性/事务的隔离性/数据库事务隔离级别/ 数据库的隔离级别导致问题/数据库事务的使用/mysql的事务死锁/ 快速解决mysql死锁问
数据库事务:针对数据库的某一组操作要么全部成功,要么全部失败。事务的作用1:保证数据的完整性,失败后可以恢复到原来状态2:事务与事务之间互不干扰,这样数据会更加安全数据库事务ACID属性 / 特性原子性(Atomicity):要么全部完成,要么全部不完成。一致性(Consistency):事务必须始终保持系统处于一致性。隔离性(Isolation):隔离执行事务,使它们好像是...原创 2020-03-31 22:43:38 · 477 阅读 · 0 评论 -
java中的锁——自旋锁
【笔记】java中的所有锁自旋锁自旋锁(spinlock):是指当一个线程在获取锁的时候,如果锁已经被其它线程获取,那么该线程将循环等待,然后不断的判断锁是否能够被成功获取,直到获取到锁才会退出循环。如何实现自旋锁public class SpinLock { private AtomicReference<Thread> cas = new AtomicRefer...原创 2020-03-19 16:22:09 · 888 阅读 · 0 评论 -
java中的锁——偏向锁 / 轻量级锁 / 重量级锁
【笔记】java中的所有锁锁的状态总共有四种:无锁状态、偏向锁、轻量级锁和重量级锁。随着锁的竞争,锁可以从偏向锁升级到轻量级锁,再升级的重量级锁(但是锁的升级是单向的,也就是说只能从低到高升级,不会出现锁的降级)。锁的状态是通过对象监视器在对象头中的字段来表明的。JDK 1.6中默认是开启偏向锁和轻量级锁的。锁膨胀:从轻量锁膨胀到重量级锁是在轻量级锁解锁过程发生的。四种状态会随着竞争的情...原创 2020-03-19 16:21:42 · 725 阅读 · 0 评论 -
java中的锁——分段锁
【笔记】java中的所有锁ConcurrentHashMap是由Segment数组结构和HashEntry数组结构组成。Segment是一种可重入锁ReentrantLock,在ConcurrentHashMap里扮演锁的角色,HashEntry则用于存储键值对数据。一个ConcurrentHashMap里包含一个Segment数组,Segment的结构和HashMap类似,是一种数组和链表结...原创 2020-03-19 14:20:43 · 5715 阅读 · 0 评论 -
java中的锁——乐观锁 / 悲观锁
【笔记】java中的所有锁一、悲观锁总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程)。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。Java中synchronized和Reentra...原创 2020-03-19 14:08:07 · 601 阅读 · 0 评论 -
IDEA是如何追源码?
首先我们再编译器上把我们要追源码的单词打出来。第二步 在前面打断点。第三步,光标在其单词上面,右击最后:我们要的源码就出来啦~...原创 2020-03-19 13:35:10 · 1030 阅读 · 1 评论 -
java中的锁——互斥锁 / 读写锁
【笔记】java中的所有锁一、互斥锁互斥锁:一次最多只能有一个线程持有的锁。如Java的Lock共享资源的使用是互斥的,即一个线程获得资源的使用权后就会将该资源加锁,使用完后会将其解锁,如果在使用过程中有其他线程想要获取该资源的锁,那么它就会被阻塞陷入睡眠状态,直到该资源被解锁才会被唤醒,如果被阻塞的资源不止一个,那么它们都会被唤醒,但是获得资源使用权的是第一个被唤醒的线程,其它线程又...原创 2020-03-19 12:52:52 · 1496 阅读 · 0 评论 -
java中的锁——独享锁 / 共享锁 / AQS
【笔记】java中的所有锁独享锁与共享锁也是通过AQS来实现的,通过实现不同的方法,来实现独享或者共享。对于Synchronized而言,是独享锁。一、独享锁独享锁:该锁每一次只能被一个线程所持有。【此处追ReentrantReadWriteLock源码】ReentrantReadWriteLock 有两把锁:ReadLock和WriteLock,可知,一个读锁****一个写锁,...原创 2020-03-19 12:35:23 · 1188 阅读 · 0 评论 -
java中的锁——可重入锁 / 不可重入锁
【笔记】java中的所有锁一、可重入锁可重入锁是指:可重复可递归调用的锁,在外层使用锁之后,在内层仍然可以使用,并且不发生死锁(前提得是同一个对象或者class)。优点:避免死锁synchronizedvoidsetA()throwsException{Thread.sleep(1000);setB();}synchronizedvoidsetB()throwsExceptio...原创 2020-03-19 11:21:24 · 1538 阅读 · 0 评论 -
java中的锁——公平锁 / 非公平锁
一、公平锁公平锁是指多个线程按照申请锁的顺序来获取锁。优点:等待锁的线程不会饿死。缺点:整体吞吐效率相对非公平锁要低,等待队列中除第一个线程以外的所有线程都会阻塞,CPU唤醒阻塞线程的开销比非公平锁大。作用:严格按照线程启动的顺序来执行的,不允许其他线程插队执行。非公平锁非公平锁是指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请的线程优先获取锁。有可能,会造成优...原创 2020-03-19 11:02:41 · 1005 阅读 · 0 评论 -
超详 java中全部的锁
java种有15种锁:1.公平锁 / 非公平锁2.可重入锁 / 不可重入锁3.独享锁 / 共享锁4.互斥锁 / 读写锁5.乐观锁 / 悲观锁6.分段锁7.偏向锁 / 轻量级锁 / 重量级锁8.自旋锁...原创 2020-03-19 11:02:12 · 485 阅读 · 0 评论