社区
Java EE
帖子详情
synchronized中锁对象是使用的equals比较还是==?
finemi
2016-05-06 09:58:55
synchronized (lock) {
Thread.sleep(20000);
}
其中lock的对比是用的equals还是==?
...全文
222
5
打赏
收藏
synchronized中锁对象是使用的equals比较还是==?
synchronized (lock) { Thread.sleep(20000); } 其中lock的对比是用的equals还是==?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
淡定的蜗牛
2019-01-11
打赏
举报
回复
建议看看这个,应该就明白了
http://mp.weixin.qq.com/s?__biz=MzU3MDc5NjU2OA==&mid=2247483751&idx=1&sn=bd3a8c70d4c6fdcaaa37920d19cf846d&chksm=fce8be10cb9f37061d34a82c4a1c3d5e5269dfaa0ca3ad69d63f4d4f186843e6b11996eb6394#rd
小猪牵着大猪的鼻
2016-05-06
打赏
举报
回复
==,每一个对象都是基础于Object对象,synchronized锁的是对象而不是变量,对象之间的相不相同采用==判断
迷林
2016-05-06
打赏
举报
回复
用== equals 是比较两个对象的内容
bajinggong
2016-05-06
打赏
举报
回复
用==判断的
Jintao_Ma
2016-05-06
打赏
举报
回复
是==, 如果是equals比较的是内容,那两个对象new lock1,new lock2实际上不是同一个lock,虽然lock1.equals(lock2)为true。
使用
synchronized
,如何判断是不是同一个锁。
先来看一下 == 和
equals
的区别:java中默认的
equals
方法实现如下:public boolean
equals
(Object obj) { return (this == obj); }值类型,用==判断相等性。
对象
引用的话,==判断引用指向的
对象
是否是同一个。==是判断两个变量或实例是不是指向同一个内存空间。
equals
是判断两个变量或实例所指向的内存空间的值是不是相...
Synchronized
锁
对象
详解
sychronized
你竟然用Integer作为
synchronized
的锁
对象
?
在
使用
多线程编程时,往往会
使用
一些手段保证线程安全,也就是加锁,但是加锁也必须合理,如
使用
synchronized
对
对象
加锁时,如果不注意,还可能发生错误的加锁。 先看一段小测试,在这个小测试中,启动了1000个线程,每个线程在对integer加1前都先获得integer的锁,这看似是线程安全的,并且预期可能会得到1000这个值,而然并不然,在运行多次之后他总是输出<=1000的值,那么,这...
什么?你竟然用Integer作为
synchronized
的锁
对象
?
在
使用
多线程编程时,往往会
使用
一些手段保证线程安全,也就是加锁,但是加锁也必须合理,如
使用
synchronized
对
对象
加锁时,如果不注意,还可能发生错误的加锁。 先看一段小测试,在这个小测试中,启动了1000个线程,每个线程在对integer加1前都先获得integer的锁,这看似是线程安全的,并且预期可能会得到1000这个值,而然并不然,在运行多次之后他总是输出<=100...
面试官:
synchronized
可以锁字符串吗?
在日常项目中可能存在需要防止用户数据并发操作的问题,需要对代码块进行加锁保护。例如:用户输入存数据库,重复数据不存DB;用户操作缓存数据等,这里想尽可能把锁的
对象
放小,因此通常都是锁用户而不是锁整个类或者代码块;然而在用的时候可能会存在一些问题。
synchronized
可以锁存活于字符串常量池中的值,不能锁存活于堆栈中的字符串(字符串地址要相同)可以
使用
String
对象
.intern()将该字符串放入字符串常量池中,但是常量池的回收只能依赖于fullGC,故不推荐
使用
。
Java EE
67,513
社区成员
225,879
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章