synchronized:修饰方法,代码块。
互斥锁(对象锁),同步锁定,即保证了可见性又保证了原子性
Volatile:修饰变量,保证了可见性,但是不保证原子性,同时禁止指令重排序
可见性:是因为JMM将工作内存置为无效,每次线程读取和写入数据都是直接操作了主内存(lock指令的作用)
禁止指令重排序:
1)当程序执行到volatile变量的读操作或者写操作时,在其前面的操作的更改肯定全部已经进行,且结果已经对后面的操作可见;在其后面的操作肯定还没有进行
2)在进行指令优化时,不能将在对volatile变量访问的语句放在其后面执行,也不能把volatile变量后面的语句放到其前面执行
Serialize:代表序列化,一个类i想要可以序列化,必须实现序列化接口(Serializable),序列化是为了把对象变成流进行传递(内部外部序列化)。
1)序列化时,属性可以序列化,方法不可以,序列ID必须携程public static final形式的
2)序列化时,static和transient修饰的变量不可以序列化
3)反序列化时,需要class文件
static:修饰类,方法,成员变量(不可以修饰局部变量,局部变量和形参只能使用final修饰)。被static修饰的变量属于类本身,而不是某一个类的某一个实例对象。同时静态方法不可以直接访问非静态成员,因为类加载的顺序问题。静态块,方法中不能出现this,super。
相关文章
- 01-15C++关键字const,readonly,volatile,static
- 01-15Volatile关键字&&DCL单例模式,volatile 和 synchronized 的区别
- 01-15synchronized,volatile,serialize,static关键字
- 01-15C语言中volatile、register、const、static、extern、 auto关键字的作用
- 01-15高级java必会系列二:多线程经常使用的3个关键字:synchronized、ReentrantLock、volatile
- 01-15Java多线程6:synchronized锁定类方法、volatile关键字及其他
- 01-15java语言手写高synchronized同步器锁和红黑树 以及对volatile关键字的底层分析(未完待续。。。)
- 01-15C语言中关键字auto、static、register、const、volatile、extern的作用
- 01-15Java 关键字volatile 与 synchronized 作用与区别
- 01-15并发系列2:Java并发的基石,volatile关键字、synchronized关键字、乐观锁CAS操作