• 二、synchronized同步锁


    一、简介

    在Java多线程中,我们要实现同步串行最早接触的就是synchronized关键字。

    基本语法如下:

    synchronized(锁) {
        // 代码块
    }

    sychronized关键字的锁主要有三种使用:

    1)对象锁

    2)类锁

    3)字符串锁

    二、示例

    一、对象锁

    最常见的写法,synchronized写在了成员方法上,这表示它以this为锁,锁的是当前对象

    public synchronized void execute() {
            // 代码
    }

    或者你也可以换一种写法,降低锁粒度

    public void execute() {
            synchronized (this) {
                // 代码块
            }
        }

    二、类锁

    静态方法加锁,那么锁的是类

    public static synchronized void execute() {
            // 代码块
        }

    你也可以把类当作锁

    public void execute() {
            synchronized (SynchronizedDemo.class) {
                // 代码块
            }
        }

    三、字符串

    除了对象锁,类锁,Java还支持以一个字符串作为锁。

    这里注意,通常我们会和String的intern()方法一起用。intern()方法会将相同的值引用指向常量池的同一个内存块,所以可以保证字符串值相同即锁相同(即使值是由引用拼接的)。

    private String id = "1";
    
        public void execute() {
            synchronized (id) {
                // 代码块
            }
        }
  • 相关阅读:
    应用提交到安卓应用市场需要注意哪些地方?
    chromedriver 下载
    缺陷与测试报告
    需求分析与测试计划、方案
    【转】使用信号监控 Django 模型对象字段值的变化
    缓存技术
    Tomcat 代码方式启动
    枚举类型 (币种例子)
    SpringMVC 常用注解
    HttpClient 教程
  • 原文地址:https://www.cnblogs.com/lay2017/p/10165196.html
Copyright © 2020-2023  润新知