摘要: java锁分为三大类乐观锁、悲观锁、自旋锁 乐观锁:乐观锁是一种乐观思想,即认为读多写少,遇到并发写的可能性低,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,采取在写时先读出当前版本号,然后加锁操作(比较跟上一次的版本号,如果一样则更 阅读全文
posted @ 2021-02-21 19:04 abcdefghijklmnop 阅读(504) 评论(0) 推荐(0) 编辑
摘要: 一.synchronized的缺陷 synchronized是java中的一个关键字,也就是说是Java语言内置的特性。那么为什么会出现Lock呢? 在上面一篇文章中,我们了解到如果一个代码块被synchronized修饰了,当一个线程获取了对应的锁,并执行该代码块时,其他线程便只能一直等待,等待获 阅读全文
posted @ 2021-02-21 18:40 abcdefghijklmnop 阅读(1132) 评论(0) 推荐(0) 编辑
摘要: 解法一:wait/notify和synchronized的组合 import java.util.LinkedList; import java.util.List; import java.util.concurrent.Semaphore; /** * 实现一个容器,提供add,size方法 * 阅读全文
posted @ 2021-02-21 17:15 abcdefghijklmnop 阅读(124) 评论(0) 推荐(0) 编辑
摘要: synchronized(this) 此处this指的是进入此代码块的线程对象,如果ta进来了,那么锁住ta synchronized(this)的意思是: 一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个 阅读全文
posted @ 2021-02-21 14:25 abcdefghijklmnop 阅读(1002) 评论(0) 推荐(0) 编辑
摘要: 一、概述 1、synchronized作用 原子性:synchronized保证语句块内操作是原子的 可见性:synchronized保证可见性(通过“在执行unlock之前,必须先把此变量同步回主内存”实现) 有序性:synchronized保证有序性(通过“一个变量在同一时刻只允许一条线程对其进 阅读全文
posted @ 2021-02-21 13:33 abcdefghijklmnop 阅读(221) 评论(0) 推荐(0) 编辑