Android学习计划

(学习01)Java中synchronized关键字理解

2017-11-28  本文已影响0人  这一刻幸福

概要

理解Java中的synchronized关键字。

目标

理解synchronized的含义及原理

理解synchronized的基本规则

明确synchronized关键字修饰普通方法、静态方法和代码块时锁对象的差异。

实现

一、synchronized含义

       Java多线程中的同步机制会对资源进行加锁,保证同一时间内只有一个线程可以操作对应资源,避免多线程访问相同资源发生冲突。

synchronized是一种同步锁,可以实现同步机制。

二、synchronized基本规则

1、线程访问对象中的synchronized方法或代码块,其他线程访问该对象的synchronized方法或代码块将被堵塞;

2、线程访问对象中的synchronized方法或代码块,其他线程能正常访问该对象的非同步代码块;

3、线程访问对象中的synchronized方法或代码块,其他线程访问该对象的其他synchronized方法或代码块将阻塞。

三、synchronized修饰对象差异性对比

1、修饰普通方法

       一个对象中的枷锁方法只允许一个线程访问。需要注意的是,这种情况下锁的是访问该方法的实例对象,如果多个线程不同对象访问该方法,则无法保证同步

2、修饰静态方法

       由于静态方法是类方法,所以这种情况下锁的是包含这个方法的类,也就是类对象;这样如果多个线程不同对象访问该静态方法,也是可以保证同步的。

3、修饰代码块

        普通代码块,如Synchronized(obj) 这里的obj可以为类中的一个属性,也可以是当前的对象,它的同步效果跟修饰普通方法一样;

Synchronized(obj.class)静态代码块,它的同步效果跟修饰静态方法类似。

初步学习中,没能做到深入研究。

感谢老哥的指点。www.cnblogs.com/skywang12345/p/3479202.html

上一篇下一篇

猜你喜欢

热点阅读