锁对象改变

全面解析Synchronized

橙三吉。 提交于 2019-12-10 03:09:51
在多线程的环境下,经常存在线程安全问题,这种问题产生的原因在于:该是原子操作的代码段被其他的线程切割,从而引起的数据混乱问题。在本篇博客中将讲述如何使用synchronized关键字保证代码段的原子操作。 synchronized关键字 不管synchronized以何种方式使用,都会对一个对象加锁,这个对象也就是所谓的监视器 synchronized关键字具有一下特征: (1)如果对持有相同锁的synchronized方法或者代码块,同步执行(即排队,执行完一个,另一个才能执行) (2)如果对持有不同锁的synchronized方法 或者代码块 ,异步执行 (3)synchronized与非synchronized方法 或者代码块 ,异步执行 synchronized方法 使用synchronized来修饰方法(非static方法),其实就是this对象加锁 下面通过synchronized方法来看一下上述的三个特征 首先定义一个操作类MyObject,在类中有三个方法init,alter,print,其中init,alter方法使用synchronized修饰,代码如下: package com.feng.example; public class MyObject { synchronized public void init() { try { System.out