锁
文章平均质量分 70
东北亚大中华区首席搬砖工具人
要饭,要饭,精通C++
展开
-
Java并发编程之CountDownLatch/CyclicBarrierDemo/SemaphoreDemo详解
CountDownLatch详解什么是CountDownLatch?代码说明一 :班长锁门代码说明二:秦国统一六国什么是CyclicBarrierDemo?代码说明一:集齐7个龙珠,召唤神龙代码说明二:模拟赛马什么是SemaphoreDemo?代码说明一:抢车位什么是CountDownLatch?让一线程阻塞直到另一些线程完成一系列操作才被唤醒。CountDownLatch主要有两个方法(await(),countDown())。当一个或多个线程调用await()时,调用线程会被阻塞。其它线程调用c原创 2021-06-11 22:53:18 · 320 阅读 · 0 评论 -
Java之LockSupport详解
文章目录前言一、LockSupport是什么?二、Object中wait和Notify限制1.代码模拟三、Condition接口中的await后signal使用限制1.代码模拟2.存在问题四、LockSupport方法介绍1.传统的synchronized和Lock实现等待唤醒通知的约束2. LockSupport类中的park等待和unpark唤醒3.代码模拟4.重点说明5.形象的理解6.面试题前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要转载 2021-06-11 22:52:26 · 551 阅读 · 0 评论 -
Mysql之数据库锁(表锁和行锁)详解
锁的分类从对数据的操作类型分为:读锁(共享锁)和 写锁(排他锁)读锁:针对同一份数据,对该数据的读操作可以同时进行且不受影响。写锁:写操作未完成前,会阻断其他的读操作和写操作。从对数据的操作粒度分为:表锁 和 行锁表锁表锁特点MylSAM引擎使用表锁,开销小,加锁快,无死锁,锁定力度大,发生锁冲突的概率最高。并发度最低不支持事务查看数据库锁SHOW OPEN TABLES in hanyxx; --查看数据库hanyxx中的表是否加锁LOCK TABLE book read..原创 2021-06-11 22:50:11 · 2110 阅读 · 1 评论 -
Mysql数据库-面试题
1. 数据库的三范式是什么?第一范式:强调的是列的原子性,即数据库表的每一列都是不可分割的原子数据项。 第二范式:要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性。 第三范式:任何非主属性不依赖于其它非主属性。2. 一张自增表里面总共有 7 条数据,删除了最后 2 条数据,重启 MySQL 数据库,又插入了一条数据,此时 id 是几?表类型如果是 ...转载 2021-05-26 15:58:44 · 809 阅读 · 0 评论 -
Java面试之synchronized和Lock有什么区别?
1.原始构成synchronized是关键字,属于JVM层面monitorenter,monitorexit(底层是通过monitor对象来完成,其实wait/notify等方法也依赖于monitor对象,只有在同步块或方法中才能调用wait/notify等方法)Lock是具体类(java.util.concurrent.locks.lock)是api层面的锁。java5开始使用。2.使用方法synchronized 不需要用户手动去释放锁,当synchronized代码执行完成后原创 2021-03-28 20:13:41 · 109 阅读 · 0 评论 -
Java面试之Synchronized无法禁止指令重排却能保证有序性
为什么Synchronized无法禁止指令重排,却能保证有序性前言首先我们要分析下这道题,这简单的一个问题,其实里面还是包含了很多信息的,要想回答好这个问题,面试者至少要知道一下概念:Java内存模型并发编程有序性问题指令重排synchronized锁可重入锁排它锁as-if-serial语义单线程&多线程标准解答为了进一步提升计算机各方面能力,在硬件层面做了很多优化,如处理器优化和指令重排等,但是这些技术的引入就会导致有序性问题。先解释什么是有序性问题,也知道是什么原创 2021-03-24 20:25:44 · 359 阅读 · 1 评论 -
Java面试之锁-自旋锁
Java锁之自旋锁自旋锁:spinlock,是指尝试获取锁的线程不会立即阻塞,而是采用循环的方式去尝试获取锁这样的优点:是减少线程上下文切换的消耗,缺点是循环会消耗CPU原来提到的比较并交换,底层使用的就是自旋,自旋就是多次尝试,多次访问,不会阻塞的状态就是自旋。优缺点优点:循环比较获取直到成功为止,没有类似于wait的阻塞缺点:当不断自旋的线程越来越多的时候,会因为执行while循环不断的消耗CPU资源手写自旋锁通过CAS操作完成自旋锁,A线程先进来调用myLock方法自己持有锁5秒,原创 2021-03-17 21:40:58 · 124 阅读 · 0 评论 -
Java面试之锁-可重入锁和递归锁
可重入锁和递归锁ReentrantLock概念可重入锁就是递归锁指的是同一线程外层函数获得锁之后,内层递归函数仍然能获取到该锁的代码,在同一线程在外层方法获取锁的时候,在进入内层方法会自动获取锁也就是说:线程可以进入任何一个它已经拥有的锁所同步的代码块ReentrantLock / Synchronized 就是一个典型的可重入锁代码可重入锁就是,在一个method1方法中加入一把锁,方法2也加锁了,那么他们拥有的是同一把锁public synchronized void method1()原创 2021-03-15 21:02:33 · 134 阅读 · 0 评论 -
Java面试之锁-读写锁
独占锁(写锁) / 共享锁(读锁) / 互斥锁概念独占锁:指该锁一次只能被一个线程所持有。对ReentrantLock和Synchronized而言都是独占锁共享锁:指该锁可以被多个线程锁持有对ReentrantReadWriteLock其读锁是共享,其写锁是独占写的时候只能一个人写,但是读的时候,可以多个人同时读为什么会有写锁和读锁原来我们使用ReentrantLock创建锁的时候,是独占锁,也就是说一次只能一个线程访问,但是有一个读写分离场景,读的时候想同时进行,因此原来独占锁的并发性就没转载 2021-03-15 20:50:26 · 74 阅读 · 0 评论