首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

synchronized锁住了什么?

而加synchronized关键关键字无疑是个简单的办法,synchronized是java提供的一个关键字,给代码块或者方法加上这个关键字就可以保证一个线程开始执行被synchronized修饰的方法或代码块时...,就是count++,这三个方法都实现了同步,只不过有些不同,分别是类方法的同步,实例方法的同步,代码块的同步。...thread1获得的是lockTest1的内置锁,thread2获得了lockTest2的内置锁,这两个线程对count进行的是肆无忌惮的操作,没有达到同步的效果,所以当synchronized作用于代码块时,他锁住的就是...能否保证线程安全,就看synchronized锁住的是不是同一个对象,当一个类方法被synchronized修饰时,需要获取的内置锁所在的对象不是任何一个实例对象而是类对象。...除了这三种情况还有很重要的一点,就是我们题目所说,synchronized到底锁住了什么?是受保护代码还是对象?是对象。java中每个对象都有一个内置锁,而“锁住”是什么意思?

88120
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    码妞:Java那么多锁,能锁住灭霸吗?

    current = Thread.currentThread(); cas.compareAndSet(current, null); } } 稍微分析下~ lock()方法利用...能够成功获取到,不会进入while循环; 如果此时线程A没有释放锁,另一个线程B又来获取锁,此时由于不满足CAS,所以就会进入while循环; 然后线程B会不断判断是否满足CAS,直到A线程调用unlock方法释放了该锁...这里插播一下: 阻塞或唤醒一个Java线程需要操作系统切换CPU状态来完成,这种状态转换需要耗费处理器时间。 来看看自旋和阻塞的比较~ ? ? ? ?...关于无锁~ 如果一个方法本来就不涉及共享数据,那它自然就无须任何同步措施去保证正确性,因此会有一些代码天生就是线程安全的。...小总结 对Java的各种锁概念做了下整理,写了些自己的理解, 还有很多基础方面,比如Java的对象头、对象模型(都比较基础)、锁的优化、各类锁代码实现等,后续再补充下。

    39130

    synchronized到底锁住的是谁?

    这也比较能推出,在实例方法上加入synchronized,那么它获取的就是这个累的锁,锁住的就是这个对象实例。 那锁住类还是锁住对象实例,这跟我线程安全关系大吗?大,差之毫厘谬以千里的大。...为了更好的理解锁住类还是锁住对象实例,在进入“3)方法中使用同步代码块”前,先直观的感受下这两者的区别。...对实例方法(普通方法)上加关键字锁住对象实例锁的解释 首先定义一个Demo类,其中的实例方法加上了synchronized关键字,按照所述也就是说锁住的对象实例。...对静态方法上加关键字锁住类锁的解释 静态方法是类所有对象实例所共享的,无论定义多少个实例,是要是静态方法上的锁,它至始至终只有1个。...lock1对象实例,demo2方法中的同步代码块锁住的是lock2对象实例。

    88020

    synchronized锁住的是代码还是对象

    Java中,synchronized关键字是用来控制线程同步的,就是在多线程的环境下,控制synchronized代码段不被多个线程同时执行。...回到本文的题目上:synchronized锁住的是代码还是对象。答案是:synchronized锁住的是括号里的对象,而不是代码。...当synchronized锁住一个对象后,别的线程如果也想拿到这个对象的锁,就必须等待这个线程执行完成释放锁,才能再次给对象加锁,这样才达到线程同步的目的。...那么,如果真的想锁住这段代码,要怎么做?也就是,如果还是最开始的那段代码,每个线程new一个Sync对象,怎么才能让test方法不会被多线程执行。 解决也很简单,只要锁住同一个对象不就行了。...方法也相当于全局锁,相当于锁住了代码段。

    75920

    synchronized到底锁住的是谁?

    这也比较能推出,在实例方法上加入synchronized,那么它获取的就是这个累的锁,锁住的就是这个对象实例。 那锁住类还是锁住对象实例,这跟我线程安全关系大吗?大,差之毫厘谬以千里的大。...为了更好的理解锁住类还是锁住对象实例,在进入“3)方法中使用同步代码块”前,先直观的感受下这两者的区别。...对实例方法(普通方法)上加关键字锁住对象实例锁的解释 首先定义一个Demo类,其中的实例方法加上了synchronized关键字,按照所述也就是说锁住的对象实例。...对静态方法上加关键字锁住类锁的解释 静态方法是类所有对象实例所共享的,无论定义多少个实例,是要是静态方法上的锁,它至始至终只有1个。...lock1对象实例,demo2方法中的同步代码块锁住的是lock2对象实例。

    50410

    win10键盘锁住了怎么解决

    有win10系统用户在使用的时候,发现键盘被锁住了,导致无法使用,经过分析可能是不小心按到了键盘上的锁住键 锁定键盘的快捷键 笔记本电脑:Fn+Numlock 键 第一种方法: 1、外接键盘,是否按过...第二种方法: 1,按下键盘上的win+r键,打开运行窗口。输入“cmd”并回车,打开命令行。...win10键盘个别按键失灵的原因及解决方法 具体方法如下: 1、由于在另一个系统中键盘没有问题,所以考虑到可能是软硬件冲突导致的,所以从设置入手。...Win10系统shift键失灵不能用的三种解决方法 操作步骤: 方法1: 如果有外接USB键盘,就连接后测试USB键盘上的SHIFT键是否可以正常使用。...参考链接 : http://www.xitongcheng.com/jiaocheng/win10_article_57531.html win10键盘锁住了怎么解决?

    10K20

    关于线上synchronized锁住字符串引起的坑

    以及他的原理,原因相比大家都知道,具体可以看之前写的分析https://www.jianshu.com/p/62b66ab308a7 那么既然可以锁对象,我们这里锁字符串自然也可以,这个没毛病,但是我们学过java...synchronized锁,这样同一个行业下同一个公司名只有一个线程能去查询和创建,这样这里就做到了排队效果; 二 原因分析 上面我们同事想法挺好,但是这里他忽略了可能不是同一个对象的情况,它这里拼接方法伪代码大家可以看一下...但是他们内存地址不一样,那我们就只需要让他们有一样的内存地址即可,这里我就想到了常量池,如果把这些券商都放常量池内,我们锁的就都是常量池的对象了,这就可以保障一个一致性了; 我们可以具体看下intern()方法的...调用intern方法时,如果池中已经包含一个字符串,该字符串等于equals(object)方法确定的这个字符串对象,则返回池中的字符串。...此字符串对象将添加到池中,并返回对此字符串对象的引用 从释义来看,这明显满足我们的需求了,下面就测试了一下,大家可以看看也可以自己拿过去试试; 五测试 我们这里模拟了并发锁同一个值一样的字符串,看看在锁住的时候

    65650

    Java方法

    专栏介绍 【Java】 目前主要更新Java,一起学习一起进步。 本期介绍 本期主要介绍方法 文章目录 1. 回顾--方法的定义和调用 2. 定义方法的格式详解 3. 定义方法的两个明确 4. ...调用方法的流程图解 5. 定义方法练习 练习一 练习二 练习三 6. 定义方法的注意事项 7. 调用方法的三种形式 8. 方法重载 9. 方法重载练习 练习一 练习二 练习三 1. ...print 方法被 main 方法调用后直接输出结果,而 main 方法并不需要 print 方法的执行结果,所以 被定义为void 。 2. ...调用方法的三种形式 直接调用: 直接写方法名调用 赋值调用:调用方法,在方法前面定义变量,接收方法返回值 输出语句调用: 在输出语句中调用方法, System.out.println...重载方法调用: JVM 通过方法的参数列表,调用不同的方法。 9. 方法重载练习 练习一 比较两个数据是否相等。

    79520

    Java方法

    Java方法 为什么要使用方法 生活中的方法(工具) 螺丝刀,锤子,扳手 1、提高复用度,可重复使用 2、提高效率 开发中使用方法来实现同样的效果,为了解决复用和效率的问题 概念 实现特定功能的一段代码...body; } public static 返回值类型 方法名(数据类型 形参名) { 方法体; } 声明位置 定义在类中,与其他方法(main方法)并列 无返回值方法调用 mothodName...,所有的代码和方法都需要在main方法中被完成和调用 方法名的后面一定要跟 方法和其他方法的关系是并列关系 有参无返回值调用 import java.util.Scanner; class TestMethod3...Actions 总结 局部变量声明在函数中,从定义的那一行开始到函数结束时被销毁 局部变量必须先赋值再使用 局部变量不能重复定义 值传递:基本数据类型的传递不改变实参 引用传递:引用数据类型的传递会改变实参 Java...2、构造方法没有返回值类型 3、创建对象时,触发构造方法的调用,不可手动调用 4、如果没有声明构造方法,编译器默认生成无参构造方法 5、如果定义了有参构造方法,编译器就不会创建无参构造方法 【强制要求

    76040

    Java 方法

    一、什么是方法呢?Java方法是语句的集合,它们在一起执行一个功能。方法是解决一类问题的步骤的有序组合。方法包含于类或对象中。方法在程序中被创建,在其他地方被引用。...三、带返回值方法定义语法:修饰符 返回值类型 方法名(参数类型 参数名){ return 数据;}示例:public String play() {String ball = "球";return...ball; //或 return "球";}注意事项:方法定义时return后面的返回值与方法定义上的数据类型要匹配,否者程序将报错!...四、带返回值方法调用语法:数据类型 变量名 = 方法名(参数)示例:public void run() {String aOne = play();System.out.println("这头狮子还在玩..." + aOne);}注意事项:方法的返回值通常会使用变量接收,否则该返回值将意义!

    57130
    领券