java并发编程学习笔记1
2016-01-09 17:20
330 查看
synchronized关键字
synchronized关键字是Java中比较常用的同步方法,使用简单方便,不用用户自己设置锁的类别,synchronized可用于method,也可以用于某一块的代码,称之为同步代码块
volatile关键字
volatile关键字常用于标记位,当一个变量使用volatile的时候,表示使用该变量直接操作主存区,而不是复制其变量到相应线程的堆栈区,因此,当volatile变量变化后将会通知到所有的线程,因为该存储区域是共享的。但是,volatile并不能保证原子操作,因此它是一个稍弱的同步修饰
explicit lock
![](http://note.youdao.com/yws/res/363/BEF10B61F694431CBD8BE2D93FD82CF0)
明确锁,可以在任何的地方使用,因此可以圈定很小的同步范围,灵活多变。
nested lock
嵌入锁的出现是因为在多线程中,常会出现相互调用,如果没有nested lock,极容易导致死锁,比如当前线程去调用另一个线程的同步方法,而在同步方法中又调用原线程的方法,将会出现死锁。nested lock会统一一个变量,在递归调用时候+1,而调用完就-1,当为0 的时候意味着出了自身没有其他人调用自身方法。
synchronized关键字是Java中比较常用的同步方法,使用简单方便,不用用户自己设置锁的类别,synchronized可用于method,也可以用于某一块的代码,称之为同步代码块
volatile关键字
volatile关键字常用于标记位,当一个变量使用volatile的时候,表示使用该变量直接操作主存区,而不是复制其变量到相应线程的堆栈区,因此,当volatile变量变化后将会通知到所有的线程,因为该存储区域是共享的。但是,volatile并不能保证原子操作,因此它是一个稍弱的同步修饰
explicit lock
明确锁,可以在任何的地方使用,因此可以圈定很小的同步范围,灵活多变。
nested lock
嵌入锁的出现是因为在多线程中,常会出现相互调用,如果没有nested lock,极容易导致死锁,比如当前线程去调用另一个线程的同步方法,而在同步方法中又调用原线程的方法,将会出现死锁。nested lock会统一一个变量,在递归调用时候+1,而调用完就-1,当为0 的时候意味着出了自身没有其他人调用自身方法。
相关文章推荐
- java并发编程学习笔记2
- java模式之观察者模式
- java并发编程学习笔记之线程池等源码小析
- java 并发编程之同步器
- eclipse使用git遇到的单词
- Java模式之单例模式
- Struts2类型转换学习笔记
- springmvc之处理模型数据之map
- springMvc+MyBatis+Maven配置和log4j相似的Logback
- struts2 @Action给方法注解
- struts2 @Action给方法注解
- Spring MVC ModelAndView 简述
- springmvc之@modelAttribute
- springmvc之SessionAttritubes注解的引发的异常
- InputEvent .java
- HashTable的数组和连接两种实现方法(Java版本号)
- 用Notepad++写的java程序加注释报错问题
- java安装jdk时不能安装jre
- java入门学习(3)—循环,选择,基础算法,API概念
- java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener