本月博客排行
-
第1名
龙儿筝 -
第2名
lerf -
第3名
fantaxy025025 - johnsmith9th
- zysnba
- xiangjie88
年度博客排行
-
第1名
青否云后端云 -
第2名
宏天软件 -
第3名
gashero - wy_19921005
- vipbooks
- benladeng5225
- e_e
- wallimn
- javashop
- ranbuijj
- fantaxy025025
- jickcai
- gengyun12
- zw7534313
- qepwqnp
- 解宜然
- ssydxa219
- zysnba
- sichunli_030
- sam123456gz
- 龙儿筝
- arpenker
- tanling8334
- kaizi1992
- gaojingsong
- xpenxpen
- jh108020
- wiseboyloves
- ganxueyun
- xyuma
- xiangjie88
- wangchen.ily
- Jameslyy
- lemonhandsome
- luxurioust
- jbosscn
- mengjichen
- zxq_2017
- lzyfn123
- nychen2000
- forestqqqq
- wjianwei666
- ajinn
- zhanjia
- Xeden
- hanbaohong
- java-007
- 喧嚣求静
- kingwell.leng
- mwhgJava
最新文章列表
DistributedLock
private volatile String unlockSha1 = "";
public String lock(String lockName, long acquireTime, int lockTimeout) {
String identifier = UuidUtil.generate32Value();
String lock ...
synchronized 和 ReentrantLock区别
一.sychronized
sychronized是java中最基本同步互斥的手段,可以修饰代码块、方法、类。 在修饰代码块的时候需要一个reference对象作为锁的对象。 在修饰方法的时候默认是当前对象作为锁的对象, 在修饰类时候默认是当前类的Class对象作为锁的对象。
synchronized会在进入同步块的前后分别形成monitorenter和monitorexit字节码指令。 ...
lock+condition实现两个线程循环打印奇偶数:0~100
/**
* @author lanwei 2018-05-19
*/
public class ConditonPrintAB {
public static void main(String[] a) {
PrintAB printAB = new PrintAB();
new Thread(() -> printAB.pri ...
Lock锁和Condition条件
浅谈Synchronized:
synchronized是Java的一个关键字,也就是Java语言内置的特性,如果一个代码块被synchronized修饰了,当一个线程获取了对应的锁,执行代码块时,其他线程
便只能一直等待,等待获取锁的线程释放锁,而获取锁的线程释放锁会有三种情况:
1).获取锁的线程执行完该代码块,然后线程释放对锁的占有;
2).线程执行发生异常,此时JVM ...
Volatile实现原理
读写volatile变量就像是访问一个同步块一样,是原子的且是可见的,总是能访问到最新的值。
原子性
读写volatile变量是原子操作,但读写变量不就是一条指令的事吗(mov、ldr),难道这还可分?没错绝大多数变量读写都是原子的,除了在32位JVM下对long、double的读写,就不是原子的。这是因为在32位下,总线宽度就只有32bit,对64位数据的读写需要分两次进行,依次读 ...
lock与lock.lockInterruptibly源码解读
f双方都
在重入锁(ReentrantLock)中,有两个相似的方法,一个是lock,一个是lockInterruptably,之前没有细看,之前我一直用的是lock,不过最近再看公司的代码时,发现有人竟然用的是后者,于是我就好奇了,特么的到底哪里不一样,于是跟了下源码,特此记录一下。(ReentrantLock使用aqs实现的,最好先看懂aqs再来搞重入锁)。
再lock中,最终调用的是:j ...
juc - Condition源码解读
之前写过ReentrantLock的源码的博客,但是还有个重要的东西没有介绍——Condition,他的用法我就不介绍了(这种介绍性的博客我不喜欢写),我今天就写一下Condition的实现原理,还是从Conditon的常用方法入手。
1、await():这个方法由当前获得锁的线程调用,意思是释放锁,挂起自己并且唤醒等待当前线程持有的锁的其他线程(在aqs的等待队列中的其他节点),类似于syn ...
Java之多线程之Lock与Condition
Java之多线程之Lock
接上文
在多线程环境中,大部分情况下,使用 synchronized 关键字可以满足需求。
但是其也存在不足。于是 java.util.concurrent.locks 包出现 ...
Java基础之线程同步
一、什么是线程同步?
背景:多线程的程序设计,提高了代码执行效率,但存在数据共享的安全性问题。
线程同步使多个线程在同一个步调内运行,即:同一时间中,只能允许一个线程可以对数据进行操作。线程同步降低了线程的执行效率,但却保证了数据访问的安全性。
二、java中实现线程同步的方法
JDK 1.5 以前,使用 synchronized 关键字
JDK 1.5 及以后,增加了 java.uti ...
深入JVM锁机制2-Lock
前文(深入JVM锁机制-synchronized)分析了JVM中的synchronized实现,本文继续分析JVM中的另一种锁Lock的实现。与synchronized不同的是,Lock完全用Java写成,在java这个层面是无关JVM实现的。
在java.util.concurrent.locks包中有很多Lock的实现类,常用的有ReentrantLock、ReadWriteLock(实现 ...
java-jvm-jstack
jstack用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息,如果是在64位机器上,需要指定选项"-J-d64",Windows的jstack使用方式只支持以下的这种方式:jstack [-l] pidjstack [ option ] [server-id@]remote-hostname-or-IP基本参数:-F当’jstack [-l] ...