
并发
和尚要吐槽
这个作者很懒,什么都没留下…
展开
-
Java 死锁的例子
《并发的挑战》学习标注 多线程是我觉得初入JAVA中的一个难点,之前一直知道线程有阻塞死锁的状态,但是很抽象,但是真的让我自己写一个死锁的例子,我还真的有点下笔难的感觉,今天看到这本书的第一章,就学习到了一个简单的线程死锁例子,在这里分享出来:public class DeadLockDemo {原创 2016-07-26 20:07:29 · 335 阅读 · 0 评论 -
死锁和阻塞的关系
在看并发编程的第一章的时候举出了一个死锁了的例子,感觉特别棒,于是就联想到了阻塞,我们知道在JAVA环境中,线程Thread有如下五个状态:(当然有人要说是七个状态,这个以后有机会再说)1,新建状态2,就绪状态3,运行状态4,阻塞状态5,死亡状态所以说在JAVA程序运行中阻塞是一种常见的运行状态,那么首先阻塞是什么?在我理解,阻塞就是由于等待原创 2016-07-26 21:11:08 · 7081 阅读 · 0 评论 -
synchronized实现同步的三种用法
1:对于普通同步方法,锁的是当前实例的对象。意思是class A { synchronized test(){ system.out.print("lock object"); } } A a = new A();A a1 = new A();a.test();这个时候锁住的是a.然而a1并不会被锁住。2:对于静态同步方法,锁的则是当前类的class对象。意思是cla原创 2016-07-30 20:07:31 · 1165 阅读 · 0 评论 -
volatile 的学习要点
第一个重点:要了解,多线程之间的通信机制有两种,共享内存和消息传递。另外除了主存之外,每一个线程都有一个私有的本地内存空间(Local memory)。本地内存中存储了该线程以读/写共享变量的副本。其实本地内存是JMM的一个抽象概念,并不真实存在,它涵盖了缓存,写缓存区,寄存器以及其他的硬件和编译器的优化。第二个重点:重排序的问题。在执行程序的时候,为了提高性能,编译器和处原创 2016-08-05 16:56:15 · 605 阅读 · 0 评论 -
Java 原子操作的原理和问题
对java并发机制的底层实现原理学习了一下,有一些浅薄的收益。第一了解的是:java对象在JVM中有一个java对象头的概念,synchronized用的锁的信息就是存在java对象头里面,根据其中存储的markword的线程是否指向自己的线程来判断是否持有当前锁。java对象头的长度视图:长度内容说明备注32/64bitMark Wor原创 2016-08-04 16:43:41 · 376 阅读 · 0 评论 -
happens-before的规则
happens-before是JMM(java main memory)最核心的概念,在JMM中,如果一个操作执行的结果需要对另一个操作可见,那么这两个操作之间必须要存在happens-before关系。这里提到的两个操作可以是一个线程内的,也可以是在不同线程之间。happens-before的规则如下:1)程序顺序规则:一个线程中的每个操作,happens-before于该线程中的任意后原创 2016-08-05 18:32:26 · 459 阅读 · 0 评论 -
Innodb隔离级别的实现原理
Mysql 事务 隔离级别 锁 MVCC 逻辑架构原创 2017-08-31 17:32:20 · 3240 阅读 · 0 评论