Java锁Synchronized不同用法的区别

IsaacGym四足机器人sim to real全过程详细解析(walk these ways方法) 本文使用强化学习的方法运行到Aliengo机器人上完成从训练到部署的全过程。该方法使用的是GO1机器人提供了完整的sim to real代码和遥控器控制代码,所以我们只需要重新训练和部署健康就可以使用在Aliengo上。该方法使用lcm进行通讯首先程序通过UDP和机器人控制板进行通讯获取机器人状态并下达指令。然后又通过lcm进行机器人状态信息的发布和模型命令的获取。 阅读详情

一、Synchronized锁用法示例:

synchronized用处是什么?
synchronized保证了线程的原子性。(一个线程在执行被保护的代码块时,没有任何线程会同时访问)
synchronized还保证了可见性。(当执行完synchronized之后,修改后的变量对其他的线程是可见的)
Java中的synchronized,通过使用内置锁,来实现对变量的同步操作,进而实现了对变量操作的原子性和其他线程对变量的可见性,从而确保了并发情况下的线程安全。

1)加在方法上:

非静态方法:public synchronized void test(){...}
静态方法: public static synchronized void test2(){...}

2)加在代码锁

类锁

public void test(){
    ...
    synchronized (ObjLockTest.class){
        ...
    }
    ...
}

对象锁

public void test2(){
    ...
    synchronized (this){
        ...
    }
    ...
}

对象所

public void test3(){
    ...

   A a = new A();
    synchronized (a){
        ...
    }
    ...
}

二、Synchronized锁从被拥有者角度而言,分为对象锁与类锁;

1)Synchronized修饰非静态方法,或非静态方法中的代码块,或指定对象时,锁为对象锁;对象锁是属于当前对象的;

2)Synchronized修饰静态方法,或静态方法中的代码块,或指定对象为XXX.class时,锁为类锁;类锁是属于class的,是这个类的所有对象及class共用的一把锁;

 

一个对象只有一把对象锁及一把类锁:

即

1)多个线程都需要同一对象的对象锁时(注:可能是调用同一个方法,也可能是调用不同的方法来获取锁),只有一个线程能拿到锁,其他线程都需等待;

2)多个线程都需要多个对象的类锁时(注:可能是调用同一个方法,也可能是调用不同的方法来获取锁),只有一个线程能拿到锁,其他线程都需等待;

3)而2个线程,一个需要对象锁,一个需要类锁时,即使同时发生也不会相互影响(注:此结论本人通过代码测试证明是2个锁,不互斥的);

 

WPF实战案例 | C# WPF实现大学选课系统 WPF实战案例_C# WPF实现大学选课系统, C# WPF实现大学选课系统,大作业,毕业设计,该系统实现多身份登录、修改密码、课程的管理,个人信息的管理等功能。这个源码让你快速搭建自己的应用程序,注释完整,代码规范,各种风格都有,代码上手简单,代码独立,可以直接用程序打开,运行使用。也可直接点击EXE运行程序。 阅读详情

相关推荐

【2021最新版】Dubbo面试题总结(40道题含答案解析)

文章目录1、为什么要用Dubbo?2、Dubbo的整体架构设计有哪些分层?3、默认使用的是什么通信框架,还有别的选择吗?4、服务调用是阻塞的吗?5、一般使用什么注册中心?还有别的选择吗?6、默认使用什么序列化框架,你知道的还有哪些?7、服务提供者能实现失效踢出是什么原理?8、服务上线怎么不影响旧版本?9、如何解决服务调用链过长的问题?10、说说核心的配置有哪些?11、Dubbo推荐用什么协议?12、同一个服务多个注册的情况下可以直连某一个服务吗?13、画一画服务注册与发现的流程图?14、Dubbo集群容错有

程序媛小琬的博客 1万+

synchronized锁和JAVA中锁的区别

synchronized锁以及JAVA中锁的区别

2201_75382167的博客 245

TI DSP的 FFT与IFFT库函数的使用测试

/** * Copyright (C) 2013 Guangzhou Tronlong Electronic Technology Co., Ltd. - www.tronlong.com * * @file dsplib_fft.c * * @brief Example application main file. * This application will run FFT performance test. * * @author Tronlong <support@tron.

ToneChip的专栏,一个传统的嵌入式码农,裸机编程 2676

Synchronized关键字的使用区别

Synchronized关键字的使用区别 常用API method 注释 run() run()方法是我们创建线程时必须要实现的方法,但是实际上该方法只是一个普通方法,直接调用并没有开启线程的作用。 start() start()方法作用为使该线程开始执行;Java虚拟机调用该线程的 run 方法。 但是该方法只能调用一次,如果线程已经启动将会抛出IllegalThreadStateException异常。 yield() yield()方法让出CPU并且不会释放锁,让当前线程变为可

damokelisijian866的博客 591

别再乱设阻尼了!Abaqus动力分析中瑞利阻尼的α和β到底怎么算?

本文深入解析Abaqus动力分析中瑞利阻尼参数α和β的科学计算方法,帮助工程师准确设置阻尼参数以提升仿真精度。详细介绍了基于模态阻尼比的经典计算方法和多模态优化法,并结合工程案例演示参数设置流程,避免常见的阻尼设置误区。

weixin_42634811的博客 731

深入理解 Terraform 中的资源更新与管理

摘要:本文探讨Terraform处理AWS安全组名称变更时的行为。当修改不可变属性(如安全组名称)时,Terraform会创建新资源并删除旧资源。通过状态文件比对所需状态与实际状态,Terraform对不可变属性采用"先创建后删除"策略,对可变属性则直接更新。实例演示了修改安全组名称和关联EC2实例时的处理过程,强调理解资源属性可变性对基础设施管理的重要性。(149字)

2501_90323865的博客 471

synchronized的四种用法

一  修饰一个方法 Synchronized修饰一个方法很简单,就是在方法的前面加synchronized,synchronized修饰方法和修饰一个代码块类似,只是作用范围不一样,修饰代码块是大括号括起来的范围,而修饰方法范围是整个函数。 例如: 方法一 public synchronized void method() { // todo }方法二 public v

行走江湖的少侠哥 6万+

【Mode Management】AUTOSAR架构下RH850-F1KM芯片深度休眠配置实践

AUTOSAR架构下RH850-F1KM芯片深度休眠配置实践

qq_36056498的博客 1087

java的synchronized的使用场景简介以及在不同场景下的差异

例子: 对象MyTag包含两个方法如下: 1,methodF 是用synchronized修饰的 2,methodS 没有用synchronized修饰 声明一个对象objectMyTag 线程ThreadA、线程ThreadB 的构造函数的参数都是MyTag对象 场景一: ThreadA的run方法调用methodF、ThreadB的run方法调用methodS 执行结果

xuqiaobo的博客 4043

uniapp [全端兼容] - 实现大文件上传分片/切片+本地选择文件上传超大文件,大文件切片上传+断点续传+上传进度条+失败自动重传,支持单个/批量上传图片、视频、文档各种文件(App、小程序、H5

uniapp 分片 断点续传 大文件上传。uniapp大文件切片上传,uniapp实现大文件上传 分片上传 进度条,分片上传附件,实现大文件上传,实现分片大文件上传,Uniapp实现大文件上传 分片上传 进度条,uniapp文件分片上传,uniapp如何上传很大的文件,在选择文件后,按指定大小将文件切割成独立的文件片,并逐片上传,uniapp 微信小程序上传大文件如何切片,uniapp APP实现大文件分片上传、断点续传、秒传,解决大文件上传问题,大文件上传如何做断点续传,uniapp上传视频,Uniapp

🏆 前端领域优质创作者 1万+

基于POD和神经网络的多工况温度场重构反演系统

本文提出了一种基于本征正交分解(POD)和神经网络的多工况温度场重构反演系统。该系统通过POD方法从多工况温度场数据中提取主要特征模态,构建神经网络模型建立工况参数与POD模态系数的映射关系,实现温度场的快速重构。系统采用Python实现,包含数据预处理、POD分解、神经网络训练和温度场重构等模块。实验结果表明,该方法能够有效降低计算复杂度,实现高精度的温度场预测。

huanghm88的专栏 274

java中的synchronized(同步代码块和同步方法的区别)

问题的由来: 看到这样一个面试题: //下列两个方法有什么区别 public synchronized void method1(){} public void method2(){ synchronized (obj){} } synchronized用于解决同步问题,当有多条线程同时访问共享数据时,如果不进行同步,就会发生错误,java提供的解决方案是:只...

weixin_30849591的博客 806

SAP_SD模块深度解析SAP信用检查中的“未清数量”取值逻辑

确认数量 vs 订单数量:如果系统配置了可用性检查(ATP),并且订单只确认了部分数量,信用检查通常只占用已确认数量的额度(具体取决于信用组的配置)。在SAP中,未清订单数量的计算并非简单读取订单行项目的目标数量(VBAK-KWMENG),而是基于**计划行(Schedule Lines)**层级来汇总的。状态的转换点:当交货单创建(VL01N)并保存时,这部分数量对应订单的“未清订单数量”减少,“未清交货数量”增加。业务人员眼中的未清数量很简单:“我卖了100个,发了30个,未清就是70个”。

我小时候很黑的博客 309

synchronized 用法详解

一、线程不安全实例 我们先来创建一个业务类 TestService,代码如下: public class TestService { private int num; public void addName(String username) { try { if ("a".equals(username)) { num = 100; System.out.println("ThreadA

明月燃雨 3万+

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

java中tarend的用法_java中synchronized关键字的用法

自己整理:synchronized用于多线程设计,有了synchronized关键字,多线程程序的运行结果将变得可以控制。synchronized关键字用于保护共享数据。synchronized实现同步的机制:synchronized依靠"锁"机制进行多线程同步,"锁"有2种,一种是对象锁,一种是类锁。synchronized可以用于1、非静态方法中的代码块(如果是用于静态方法中的代码块可直接用于...

weixin_29214715的博客 134

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Java Synchronized 同步锁的基本用法

开启线程的方式 /** * 两种创建线程的方式 * Thread/Runnable(推荐) * * 调用start方法后,并不是立即执行多线程的代码,只是将这个多线程状态变为可运行状态,而不是执行状态 * * 两种启动线程方法的区别: * 1.共同点: ...

张雨的博客 1741

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

synchronized(this) 与synchronized(class) 之间的区别

一、概念 synchronized 是 Java 中的关键字,是利用锁的机制来实现同步的。 锁机制有如下两种特性: 互斥性:即在同一时间只允许一个线程持有某个对象锁,通过这种特性来实现多线程中的协调机制,这样在同一时间只有一个线程对需同步的代码块(复合操作)进行访问。互斥性我们也往往称为操作的原子性。 可见性:必须确保在锁被释放之前,对共享变量所做的修改,对于随后获得该锁...

qq_21479345的博客 709

JAVA基础知识-JAVA锁

本章节将详细介绍JAVA中Synchronized、Lock、ReentrantLock等实现锁操作的关键字、接口及类的用法和基本原理。

Hisoftjszx的博客 2562

synchronized的对象锁和类锁的区别

synchronized可以锁对象,代码块,类对象 ,那么他们用起来会有区别吗,这里我们用实际代码来探究下 package com.example.hxk.thread.synchroized; public class SyncTest1 { // synchronized修饰非静态方法 public synchronized void test1() { for (int i = 0; i < 5; i++) { System.out.p

doubututou的博客 418

synchronized和ReentrantLock的区别

🔐 在 Java 中,常用的锁有两种:synchronized(内置锁)和 ReentrantLock(可重入锁,re+entrant)。

日常开发分享 812

并发2:Synchronized

0.1. 锁机制有如下两种特性: 互斥性:即在同一时间只允许一个线程持有某个对象锁,通过这种特性来实现多线程中的协调机制,这样在同一时间只有一个线程对需同步的代码块(复合操作)进行访问。互斥性我们也往往称为操作的原子性。 可见性:必须确保在锁被释放之前,对共享变量所做的修改,对于随后获得该锁的另一个线程是可见的(即在获得锁时应获得最新共享变量的值),否则另一个线程可能是在本地缓...

逆光世间 141

Java面试突击之synchronized和ReentrantLock有什么区别?

在 Java 中,常用的锁有两种:synchronized(内置锁)和 ReentrantLock(可重入锁),二者的功效都是相同得,但又有很多不同点,所以我们今天就来聊聊。 区别1:用法不同 synchronized 可用来修饰普通方法、静态方法和代码块,而 ReentrantLock 只能用在代码块上。 synchronized 基础使用 使用 synchronized 修饰代码块: public void method() { // 加锁代码 synchronized (t

m0_69860228的博客 1718

java 对象锁_Java synchronized类锁,对象锁详解(转载)

在java编程中,经常需要用到同步,而用得最多的也许是synchronized关键字了,下面看看这个关键字的用法。因为synchronized关键字涉及到锁的概念,所以先来了解一些相关的锁知识。java的内置锁:每个java对象都可以用做一个实现同步的锁,这些锁成为内置锁。线程进入同步代码块或方法的时候会自动获得该锁,在退出同步代码块或方法时会释放该锁。获得内置锁的唯一途径就是进入这个锁的保护的同...

weixin_28706923的博客 691

124.线程的安全:synchronized锁的应用;

线程的安全 【示例】 模拟窗口卖票,2个窗口同时在卖100张火车票,每张票间隔50毫秒; @Data class Ticket{ //票号 private int no; //车次 private String car; } class TicTunnable implements Runnable{ //常量 //最大的票号 private int max = 100; //当前的票号 private int curr = 0;

嘻哈怪才的博客 3783

synchronized 和 Lock用法

大家有时候都会碰到的问题。例如,有些代码需避免主线程阻塞需要异步处理,开子线程实现。但是开启子线程之后有可能会碰到并发资源共享的问题,所以线程与锁是紧密相关的。下面是我从网上搜索的资料总结一下java锁synchronized和Lock的一些区别,如有不当,请告知,谢谢。 一般我们会将锁分为对象锁和类锁,两个锁是有很大差别的,对象锁是作用在实例方法或者一个对象实例上面的,而类锁是作用在静...

Song 285

java并发——synchronized浅析

原理部分内容可以直接看这篇文章深入理解Java并发之synchronized实现原理 synchronized 用法 它的修饰对象有几种: 修饰一个类,其作用的范围是synchronized后面括号括起来的部分, 作用的对象是这个类的所有对象。 class ClassName { public void method() { synchronized(ClassName.class) { // todo } } } 修饰一个方法,被修饰的方法称为

学习印记 Learning imprint 418
上一篇: java中sleep、interrupt、wait、notify、join、yield用法
下一篇: java中共享变量的可见性:volatile与synchronized 
ArtisticProgramming
博客等级 码龄8年 1粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值