- 博客(3)
- 资源 (1)
- 收藏
- 关注
原创 java多线程学习 ReentrantLock类的使用
ReentrantLock类为了保证任何时刻只有一个线程能进入临界区,通常需要给临界区上锁,只有获得锁的线程才能进入临界区。为了达到上锁的目的,我们通常使用synchronized关键字。在Java SE 5.0之后,java引入了一个ReentrantLock类,也可以实现给代码块上锁和释放锁的效果。lock方法 和unlock方法lock() 申请获得锁如果获得锁,该线程可以继续往下执行如果该锁已被其他线程获取,当前线程停止运行并进入阻塞状态,等待其他线程释放锁unlock() 释
2020-05-25 07:31:30 628
原创 java多线程学习 volatile关键字的使用
volatile关键字是java虚拟机提供的最轻量级的同步机制,用来修饰变量,可以保证变量线程间的可见性且禁止指令重排序。为了更好的理解volatile关键字,先来说下java内存模型java内存模型在Java虚拟机规范中试图定义一种Java内存模型(Java Memory Model,JMM)来屏蔽各个硬件平台和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的内存访问效果。那么Java内存模型规定了哪些东西呢,它定义了程序中变量的访问规则,往大一点说是定义了程序执行的次序。注
2020-05-18 19:08:41 334
原创 java多线程学习 synchronized 关键字的使用
synchronized是java 提供的一个并发控制的关键字,作用于对象上.每个java对象都有一个内部对象锁,通过synchronized可以向指定对象请求获取对象锁,该锁是互斥锁,一个时刻只能有一个线程能获得这把锁,其他请求获得这把锁的线程都进入阻塞状态synchronized提供的锁是可重入的锁可重入锁实现原理:每个锁关联一个请求计数器和一个占有它的线程。当计数为0时,认为锁是未被占有的;线程请求一个未被占有的锁时,JVM将记录锁的占有者,并且将请求计数器置为1 。如果同一个线程再次.
2020-05-17 03:23:06 290
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人