![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java锁
文章平均质量分 59
chen591007
这个作者很懒,什么都没留下…
展开
-
JUC中的生产者消费者
/* 1.wait()的作用是让当前线程进入等待状态,同时,wait()也会让当前线程释放它所持有的锁。“直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法”,当前线程被唤醒(进入“就绪状态”) 2.notify()和notifyAll()的作用,则是唤醒当前对象上的等待线程;notify()是唤醒单个线程,而notifyAll()是唤醒所有的线程。 3.wait(long timeout)让当前线程处于“等待(阻塞)状态”,“直到其他线程调用此对象的notify()方法或原创 2021-02-05 10:45:46 · 69 阅读 · 0 评论 -
悲观锁和乐观锁
一般可以分为两类,一个是悲观锁,一个是乐观锁,悲观锁一般就是我们通常说的数据库锁机制,乐观锁一般是指用户自己实现的一种锁机制,比如hibernate实现的乐观锁甚至编程语言也有乐观锁的思想的应用。 悲观锁:顾名思义,就是很悲观,它对于数据被外界修改持保守态度,认为数据随时会修改,所以整个数据处理中需要将数据加锁。悲观锁一般都是依靠关系数据库提供的锁机制,事实上关系数据库中的行锁,表锁不论是读写锁都是悲观锁。 悲观锁按照使用性质划分: 共享锁(Share locks简记为S锁):也称读锁,事务A对对象T加s锁原创 2021-02-04 10:59:31 · 70 阅读 · 0 评论 -
synchronized锁原理
synchronized是java提供的原子性内置锁,这种内置而且使用者看不到的锁也叫做监视器锁,使用synchronized关键字后会在编译器之后在同步代码块前后加上monitorenter和monitorexit指令,他依赖操作系统底层的互斥锁实现,他的主要作用是实现原子性操作和解决共享变量的内存可见性问题。 执行monitorenter指令会尝试获取对象所,如果对象没有锁或者已经获得了对象锁,锁的计数器+1.此时其他竞争锁的线程会进入等待队列当中。 执行monitorexit指令会把锁的计数器-1.当原创 2021-01-31 14:27:20 · 225 阅读 · 0 评论