社区
Java SE
帖子详情
关于synchronized参数问题
咖啡猫yyddbull
2012-12-26 05:03:59
请问各位大虾,synchronized (this)两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。
那么synchronized ("A"),synchronized ("dhdhfh")表示什么意思呢?参数一个字符串
...全文
288
5
打赏
收藏
关于synchronized参数问题
请问各位大虾,synchronized (this)两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。 那么synchronized ("A"),synchronized ("dhdhfh")表示什么意思呢?参数一个字符串
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
安特矮油
2012-12-27
打赏
举报
回复
synchronized ("A"),synchronized ("dhdhfh")这个只是以一个字符串常量作为lock而已,保证只能有一个线程执行该方法。因为字符串常量在系统中只有一份
yongger520
2012-12-27
打赏
举报
回复
synchronized ("A"),synchronized ("dhdhfh") 其实没啥意思
jerry605
2012-12-27
打赏
举报
回复
我觉得你要弄清楚synchronized的本质。 在java中,每个对象都持有一把对象锁,这是在java语言层实现的机制(有别于JAVA 5 中的lock),因此不需要显式释放锁。synchronized 是线程级的,并不是方法级的,因此如果两个方法都对同一个对象加了synchronized方法,并且在一个方法A中调用了另外一个方法B,如果线程调用方法A,也不会在A调用B时需要等待锁释放,因为此时线程已经获得锁了。 回到你的问题,synchronized(this), 表示线程锁加在被调用对象本身上,因此,同一时刻,该对象只能有一个synchronized方法会被一个线程调用,其它线程调用的synchronized方法都会阻塞以等待锁的释放 synchronized(this) 适用于方法彼此间都会修改对象的某个状态,如果在某个对象的两个synchronized彼此不会共享任何资源,比如A中修改资源r1,B中修改资源r2,则在A和B中同时加上synchronized(this)会引起不必要的性能开销,因为调用A和B的线程不必要同步,此时简单的办法就是通过为A和B加不同的锁: Object lock1 = new Object(); Object lock2 = new Object(); public void A(){ synchronized(lock1){ } } public void B(){ synchronized(lock2){ } } 这样,调用A和B的线程之间不会同步,只有都调用A或者都调用B的线程间需要同步。 希望对你有帮助
guangtime
2012-12-26
打赏
举报
回复
表示没意思……
2023最新,最全,最细的JUC多线程并发教程
本套课程分为三个部分并发理论并发入门并发应用在并发理论当中我会向你们介绍并发
问题
从硬件 CPU 层面到软件层面产生的原因,然后由此作为切入点向你们引入CPU、Cache、缓存一致性协议、内存与缓存模型、屏障、JMM模型等内容。在并发入门当中我会向你们介绍 Java 中如何使用线程,并介绍了使用线程的三种方式。紧接着由线程安全
问题
引出 Java 提供的两个解决线程安全
问题
的关键字:volatile 和
synchronized
,并带你们从 hotspot 源码层面详细分析了这两个关键字的实现流程。接着就是 Unsafe、CAS、LockSupport、ThreadLocal 等内容的详细分析。在并发应用中就就会全面的带你们分析 JUC 包中的源码了,具体会分析下面这些:原子操作类中的所有类源码,包括 XXXAccumulator 、 XXXAdder锁相关,包括 AQS 所有源码、Condition 条件源码、ReentrantLock 、ReentrantReadWriteLock并发工具相关并发集合相关,CopyOnWriteArrayList 和 ConcurrentHashMap阻塞队列相关线程池相关Fork/Join 相关
java
synchronized
参数
_
synchronized
参数
的理解
synchronized
是java中用来同步的方法,详细的就不介绍了。
synchronized
的用法为:
synchronized
(锁){代码块}这个锁是什么呢,我看了很多说法但没有一个能讲清楚的。通过一段时间的使用后逐渐发现了一些
synchronized
使用的规律使用
synchronized
是为了防止多个线程同时处理同一个方法,例如在同一时间使用push方法。
问题
在于锁使用的范围,其实这个我也不...
java
synchronized
参数
_个人对
synchronized
锁的
参数
理解,如果有误望指出
该楼层疑似违规已被系统折叠隐藏此楼查看此楼
synchronized
有几种用法给方法加锁也就是在声明方法时加上
synchronized
关键字,这样同时就只能有一个线程访问该方法其次就是代码块,
synchronized
(xx){xxx}但是之前我一直不解括号里面的
参数
是什么..后来自己慢慢翻资料理解了一些,例如
synchronized
(this){xxx} this我们都知道是指当前方法的所属类而s...
synchronized
参数
及其含义
这个想必大家都不陌生,java里面的重量级锁。用来控制线程安全的。在long And long ,我刚开始接触java的时候 ,我就对这个关键词好奇颇深。尤其是 它的
参数
,有this的 也有静态变量的。网上对这个
参数
解释又太过术语话。 例如: 作用于方法时,锁住的是对象的实例(this); 当作用于静态方法时,锁住的是Class实例,又因为Class的相关数据存储在永久带PermGen(jd...
synchronized
的
参数
用什么?
很多人用
synchronized
(
参数
)时,随便找个string,hashmap就作为
参数
了。 但是这个
参数
有什么用呢?
synchronized
不就是保证每个进来的线程结束后再放下一个线程进来,对吧? 这个例子保证你能明白 class 人 人 你 = new 人(); 人 我 = new 人(); 如果是
synchronized
(你){ 吃饭(); } 那么说明你只能一顿一顿吃,不能同时(多线程)吃好几顿饭; 如果是
synchronized
(人.class){ 吃饭(); } 那么只要我.
Java SE
62,614
社区成员
307,326
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章