synchronized 底层实现原理
摘要:线程在获取锁的时候,其指针指向的是一个monitor对象(由C++实现)的起始地址。每个对象实例都会有一个 monitor。其中monitor可以与对象一起创建、销毁;亦或者当线程试图获取对象锁时自动生成。而monitor是添加Synchronized关键字之后独有的。synchronized同步块
阅读全文
posted @
2019-09-14 15:38
一中晴哥威武
阅读(428)
推荐(0) 编辑
写一个死锁
摘要:从运行的打印结果我们可以看到T1和T2各自获得了a和b锁,并且互相在尝试获取对方手里的锁,但在等待对方释放锁的过程中谁也不让出已获得的锁,谁都没有赢,则形成了死锁
阅读全文
posted @
2019-07-18 10:23
一中晴哥威武
阅读(185)
推荐(0) 编辑
Semaphore拿到执行权的线程之间是否互斥
摘要:java线程之间的控制,使用Semaphore 实现 互斥 下面我们通过Semaphore来实现一个比较好的互斥操作: 输出结果:
阅读全文
posted @
2019-07-11 11:18
一中晴哥威武
阅读(1030)
推荐(0) 编辑
ReadWriteLock读写之间互斥吗
摘要:开发中遇到并发的问题一般会用到锁,Synchronized存在明显的一个性能问题就是读与读之间互斥;ReadWriteLock是JDK5中提供的读写分离锁。读写分离锁可以有效地帮助减少锁竞争,以提升系统的性能。 ReadWriteLock管理一组锁,一个是只读的锁,一个是写锁。Java并发库中Ree
阅读全文
posted @
2019-07-11 10:39
一中晴哥威武
阅读(1867)
推荐(0) 编辑
synchronized 和 lock 的区别
摘要:1、Lock不是Java语言内置的,synchronized是Java语言的关键字,因此是内置特性。Lock是一个类,通过这个类可以实现同步访问; 2、Lock和synchronized有一点非常大的不同,采用synchronized不需要用户去手动释放锁,当synchronized方法或者sync
阅读全文
posted @
2019-01-17 17:19
一中晴哥威武
阅读(185)
推荐(0) 编辑
synchronized锁住的是代码还是对象,以及synchronized底层实现原理
摘要:synchronized (this)原理:涉及两条指令:monitorenter,monitorexit;再说同步方法,从同步方法反编译的结果来看,方法的同步并没有通过指令monitorenter和monitorexit来实现,相对于普通方法,其常量池中多了ACC_SYNCHRONIZED标示符。
阅读全文
posted @
2018-11-14 15:50
一中晴哥威武
阅读(288)
推荐(0) 编辑
浅谈 CAS
摘要:CAS: CAS:Compare and Swap, 翻译成比较并交换。 java.util.concurrent包中借助CAS实现了区别于 synchronized 同步锁的一种乐观锁。 CAS应用: CAS有3个操作数,内存值V,旧的预期值A,要修改的新值B。当且仅当预期值A和内存值V相同时,将
阅读全文
posted @
2018-10-29 16:25
一中晴哥威武
阅读(117)
推荐(0) 编辑