美文网首页Android学习计划
(学习01)Java中synchronized关键字理解

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

作者: 这一刻幸福 | 来源:发表于2017-11-28 15:36 被阅读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

    相关文章

      网友评论

        本文标题:(学习01)Java中synchronized关键字理解

        本文链接:https://www.haomeiwen.com/subject/cjqebxtx.html