-
yexindonglai@163.com
2022-03-01 11:16
Java
656°
0
乐观锁和悲观锁独占锁和共享锁互斥锁和读写锁公平锁和非公平锁可重入锁自旋锁分段锁锁升级(无锁|偏向锁|轻量级锁|重量级锁)锁优化技术(锁粗化、锁消除)1、悲观锁 悲观锁对应于生活中悲观的人,悲观的人总是想着事情往坏的方向发展。 举个生活中的例子,假设厕所只有一个坑位了,小明上厕所会第一时间把门反锁上,这样其他人上厕所只能在门外等候,这种状态就是「阻塞」了 在数据中因为总是假设最坏的情况,所以每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁,有任何一线程对数据进行读写操作都会上锁,数据库的行锁、表锁、读锁,写锁都是悲观锁
-
yexindonglai@163.com
2022-03-01 11:14
研发管理
1365°
0
1、准备 测试之前需要先准备相关的工具,JMeter是运行在jdk下的一款压测工具,所以,要运行JMeter首选要安装jdk并配置环境变量,具体请自行百度jdk环境变量安装; 2、JMeter是什么ApacheJMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。它可以用于测试静态和动态资源,例如静态文件、Java小服务程序、CGI脚本、Java对象、数据库、FTP 服务器,等等。JMeter可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能
-
yexindonglai@163.com
2022-03-01 11:12
Java
693°
0
前言 单例的五种创建方式,可以看我另一篇文章: 设计模式--单例模式 ,这篇文章讲解了5种单例模式的创建方式,但今天我们来主要来讲讲单例的安全模式,那到底怎样才是安全的呢?那么接下来我会由浅入深的方式讲解单例模式;1、饿汉式packagecom.designPatterm.single;/***单例模式--饿汉式*线程安全,效率高*/publicclassSingletonModelEHan{privatestaticfinalSingletonModelEHanobj=newSingletonModelEHan();//私有构造方法,防止创建多个实例privateSingletonMode
-
yexindonglai@163.com
2022-03-01 11:11
Java
623°
0
前言 首先呢,想要了解ConcurrentHashMap,你得先了解HashMap,可以看我另一个帖子: HashMap底层原理以及LinkedHashMap、HashTable、HashSet四者区别 为什么要先了解HashMap呢?因为HashMap是线程不安全的类,只适合在单线程上使用,既然使用受限,那就意味着它的结构相对比较简单,所以呢,先学HashMap在来了解ConcurrentHashMap将会更好理解,达到锦上添花的作用,事实也是如此,因为ConcurrentHashMap也是基于HashMap发展而来的;如果你一上来就直接看ConcurrentHashMap的源码,会非
-
yexindonglai@163.com
2022-03-01 11:09
Java
553°
0
ReentrantLock ReentrantLock的出现是为了替代synchronized,因为使用lock锁之后代码会更加简洁,增加易读性,但是在jdk1.6之后,synchronized增加了一个锁升级的概念,所以从jdk1.6开始,都优先使用synchronized,这不代表着ReentrantLock就要废弃了,synchronized是一个非公平锁,若要实现公平锁就得使用ReentrantLock;所以啊,没有万能的工具,但可以通过场景的不同而选择最适合的工具来使用;ConditionCondition是为了控制线程的挂起和唤醒而发明的;也就是用来实现线程之间通讯使用的接口,
-
yexindonglai@163.com
2022-03-01 11:07
Java
527°
0
1、join()方法的作用 这个方法的作用是先将当前线程挂起,待其他线程结束后在执行当前线程的代码;2、应用场景比如有三个人小红、小李、小王,三个人相约一起去酒店吃饭,菜已经点好了, 三个人从不同的地方出发,只有三个人都到了酒店之后才会开始上菜;那么这三个人就分别代表三个线程,这三个线程执行完之后才会执行“上菜”的代码逻辑,代码示例packagecom.Lock;/***join方法示例*比如有三个人小红、小李、小王,三个人相约一起去酒店吃饭,菜已经点好了, 三个人从不同的地方出发,只有三个人都到了酒店之后才会开始上菜;那么这三个人就分别代表三个线程,这三个线程执行完之后才会执行“上菜”的代
-
yexindonglai@163.com
2022-03-01 11:06
Java
483°
0
CountDownLatch是什么? CountDownLatch是JDK1.5之后提供的一个同步工具,在并发包下面,它可以让一个或多个线程等待,一直等到其他线程中执行完成一组操作。实现功能和java多线程中的join()方法很像;想要详细了解join方法可以看我另一篇文章: java多线程join()方法的作用和实现原理 CountDownLatch有哪些常用方法CountDownLatch在调用构造方法初始化时,需要指定用给定一个整数作为计数器;这个计数器用来阻塞await方法;countDown方法: 计数器会被减1,调用此方法不会阻塞await方法 :如果计数器大于0时,线
-
yexindonglai@163.com
2022-03-01 11:05
Java
596°
0
jps(JavaVirtualMachineProcessStatusTool)输出主程序的路径全类名-l输出main方法的参数-m只输出进程编号pid-q输出jvm参数-v组合命令-mlv远程连接jps服务端配置客户端配置完jps(JavaVirtualMachineProcessStatusTool)jps是java提供的一个显示当前所有java进程pid的命令,适合在linux/unix平台上简单察看当前java进程的一些简单情况。很多人都是用过unix系统里的ps命令,这个命令主要是用来显示当前系统的进程情况,有哪些进程以及进程id。jps也是一样,它的作用是显示当前系统的java进程
-
yexindonglai@163.com
2022-03-01 11:04
Java
528°
0
中断线程的使用场景interrup()interrupted()isInterrupted()如何中断运行中的线程interrupted()方法的坑当中断线程遇到阻塞方法wait()、join()、sleep()完中断线程的使用场景想象这样一个场景,当我们打开了一个杀毒软件,此时杀毒软件正在扫描你的磁盘文件是否有病毒,但是扫描到一半的时候,你发现电脑太卡了,想要关闭杀毒软件,这时候你点击右上角的X按钮,杀毒软件中所有正在扫描的线程就会中断扫描并且关闭线程的执行,当所有线程都退出后,杀毒软件也随之关闭;中断在计算机中是一个很重要的机制,它决定你了计算机响应速度的快慢,假如没有中断机制,这时候你点
-
yexindonglai@163.com
2022-03-01 11:04
Java
686°
0
什么是AQSReentrantLock【独占锁】CountDownLatch【倒计时门栓】Semaphore【信号量】ReentrantReadWriteLock【读写锁】AQS的内部结构AQS常用方法·staste锁标志位·CLH队列以下是waitStatus的状态值CLH队列的真正面目通过ReentrantLock解读AQS温馨提示非公平锁非公平锁—第一个线程上锁过程(首次上锁)非公平锁—第二个线程抢锁说明非公平锁—第三个线程抢锁公平锁公平锁—第一次上锁公平锁—第二次上锁解锁源码解析非公平锁的lock()方法公共acquire(intarg)方法非公平锁tryAcquire()方法addW