美文网首页
Synchronized到底是什么?该怎么用

Synchronized到底是什么?该怎么用

作者: 王灵 | 来源:发表于2020-05-23 03:43 被阅读0次

Synchronized的作用

没找到官方的说明,说说个人理解。防止在多线程下,多个线程同时对一个共享变量(数据)操作导致冲突。

原理

创建一个相对对象唯一的钥匙,然后用锁把所有可以修改数据的代码锁起来,只有这把钥匙能开锁(就是字面意思。只有拿到钥匙才能打开锁执行里面的代码)。

我一直有误解

网上很多类似的介绍

在Java中,synchronized关键字是用来控制线程同步的,就是在多线程的环境下,控制synchronized代码段不被多个线程同时执行。

然后贴出一个只有一个被synchronized修饰的代码块或方法的示例类。没有错,但是容易误解,我就误解了好久。我以为只能针对这一个代码块。

 synchronized (lock) {
            ....
        }

我错了,上面是一个常见的互斥代码块。只要lock对象是同一个,那么所有'{}'包裹的代码块都是互斥的;如下代码

public class Test {
    //创建一个临时的对象吧
    private Integer lock = new Integer("0");

    public void a() {
        synchronized (lock) {
            lock = lock + 1;
        }
    }

    public void b() {
        synchronized (lock) {
            lock = lock + 2;
        }
    }

    public void c() {
        synchronized (lock) {
            lock = lock + 3;
        }
    }

    public void d() {
        synchronized (lock) {
            lock = lock + 4;
        }
    }
}

a()、b()、c()、d()函数里的代码块都是互斥的;同一时间只能有一个被执行。

synchronized (lock) {... }这段代码可以理解为:我要拿到lock对象的钥匙(一个对象只有一把钥匙)打开锁去执行里面的代码块。既然钥匙只要一把那么这些代码块就不可能同时被执行,只要我们把会修改数据的代码块都加入到synchronized (lock) {}中就可以达到避免多线程操作冲突的目的

Synchronized的使用场景

image

还是上面的模式,只是写法略微不同 ;1、锁住的对象 2、大括号里的代码块

相关文章

  • Synchronized到底是什么?该怎么用

    Synchronized的作用 没找到官方的说明,说说个人理解。防止在多线程下,多个线程同时对一个共享变量(数据)...

  • 试水

    试水 这个软件到底该怎么用呢

  • Facebook官方商务插件究竟有什么用?该怎么用?

    Facebook官方商务插件到底是什么?有什么用?该怎么用?今天的文章就将解答大家的疑惑,为大家详解“如何有效利用...

  • 选择

    又到了面临选择的时候,未来到底该怎么走才是对的?到底该如何选择怎么做才会减少不确定性?我在想,到底是什么原因,才会...

  • Time Machine 到底该怎么用?

    本文想聊聊关于 Time Machine 的话题。如果您还不知道 Time Machine 为何物,请自行叉掉本页...

  • 说说成都某小学腐肉事件

    “该怎么办就怎么给办了!!!” 那到底是什么事件呢? 成都温江七中实验小学部食堂用腐肉提供给学生。 再说这个事件的...

  • 香格里拉+去哪网Java面试题及总结

    首先香格里拉 1.Lock和synchronized区别 2.用lock的好处是什么,怎么变成公平锁。 3.说一下...

  • 汉达科技:社区app要怎么运营?

    做好APP社区运营的核心是什么?APP社区运营到底该怎么玩? 在移动互联网时代,目前的产品运营主要分为内容运营、用...

  • 【一招会写作】文章写好后,先改啥?

    写了几篇小说,总结下心得。好小说是改出来的,这是不争的事实,但是到底该改什么?怎么改?标准是什么?用什么方法改?这...

  • 到底

    到底 爱是什么 到底 情是什么 到底 家是什么 到底 婚姻该如何 启动 运营 思想成长 个人还是家 维系 到底多久...

网友评论

      本文标题:Synchronized到底是什么?该怎么用

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