摘要: 简介 有个小伙伴最近咨询我,前段时间他被面试官问了synchronized是公平锁还是非公平锁?当时就蒙圈了,最后面试结果可想而知,今天我们就用一个通俗的案例加上代码来说明公平锁和非公平锁。其实公平锁这个概念是JUC工具包才有的,比如ReentrantLock才有公平锁的概念,这篇文章我们结合生活中 阅读全文
posted @ 2021-01-03 21:19 叫练 阅读(638) 评论(0) 推荐(0)
摘要: 母鸡下蛋实例:多线程通信生产者和消费者wait/notify和condition/await/signal条件队列 阅读全文
posted @ 2020-12-31 10:03 叫练 阅读(529) 评论(3) 推荐(0)
摘要: 0.简介 前一篇文章**《Synchronized用法原理和锁优化升级过程》从面试角度详细分析了synchronized关键字原理,本篇文章主要围绕volatile关键字用代码分析下可见性,原子性,有序性,synchronized也辅助证明一下,来加深对锁的理解。 1.可见性 1.1 不可见性 A线 阅读全文
posted @ 2020-12-22 17:40 叫练 阅读(218) 评论(0) 推荐(0)
摘要: 简介 多线程一直是面试中的重点和难点,无论你现在处于啥级别段位,对synchronized关键字的学习避免不了,这是我的心得体会。下面咱们以面试的思维来对synchronized做一个系统的描述,如果有面试官问你,说说你对synchronized的理解?你可以从synchronized使用层面,sy 阅读全文
posted @ 2020-12-21 11:07 叫练 阅读(1556) 评论(1) 推荐(4)
摘要: 案例 1 package com.duyang.thread.basic.basethread; 2 3 /** 4 * @author :jiaolian 5 * @date :Created in 2020-12-16 14:02 6 * @description:线程不安全分析 7 * @mo 阅读全文
posted @ 2020-12-16 17:31 叫练 阅读(156) 评论(0) 推荐(0)
摘要: CAS是什么? CAS英文解释是比较和交换,是cpu底层的源语,是解决共享变量原子性实现方案,它定义了三个变量,内存地址值对应V,期待值E和要修改的值U,如下图所示,这些变量都是在高速缓存中的,如果两个线程A,B分别通过cas方式同时修改共享变量,假设当A线程先获取时间片,如果发现V的值和E相等就将 阅读全文
posted @ 2020-12-14 16:06 叫练 阅读(692) 评论(2) 推荐(0)
摘要: 谈谈硬件架构模型 先谈谈硬件是如何工作的,举个例子,你在window操作系统上需要下载一个游戏(20M),就需要使用cpu和内存了,在这个过程中cpu负责计算,比如计算下载进度,统计下载完成一共需要多少时间等,内存为cpu提供数据的,负责保存游戏的所有信息,比如游戏的大小(20M)数据。在这个过程中 阅读全文
posted @ 2020-12-10 17:34 叫练 阅读(332) 评论(0) 推荐(0)
摘要: springmvc为什么要拦截静态资源? 简单来说,为了请求的url不带类似*.action,*.do,比如http://localhost:8080/system/index.action,spring团队统一风格,而web项目配置的web.xml中,所有请求都必须走过DispatcherServ 阅读全文
posted @ 2020-12-07 21:30 叫练 阅读(349) 评论(0) 推荐(0)
摘要: 简介 最近做项目的时候,发现无论是前端还是后端,indexOf出现的概率都非常频繁,今天我们来看下他的实现原理吧! indexOf的含义:给定一个字符串去匹配另一个字符串的下标,如果匹配到,返回下标,如果匹配不到则返回-1,其实原理还是比较简单的,如果需要你实现,那么应该怎么做呢? 原理 现在给定匹 阅读全文
posted @ 2020-09-08 19:04 叫练 阅读(1280) 评论(0) 推荐(0)
摘要: 前言 小时候很喜欢玩电视上自带的积木游戏,那时候电子产品也不少,小学就认识了low和high两个单词,因此攒了零花钱搞到了高级版的游戏--小霸王学习机,说错了,是“游戏机”,特别是一放暑假,插个小霸王游戏机卡就能开始撸几把魂斗罗,坦克大战,比夏天吃根冰棍可香多了,那时候没有空调,不惧严寒酷暑的我们在 阅读全文
posted @ 2020-09-04 10:37 叫练 阅读(514) 评论(0) 推荐(0)