社区
Java SE
帖子详情
synchronized(this),这个this指的是什么???
zero8223
2002-10-08 12:26:59
public synchronized void Push(char c)
{
// :-)
}
这里synchronized 同步的是什么?我一直没有搞懂,我知道应该同步共享的变量,可是难以理解,尤其是synchronized(this),这个this是什么?!不会是Class的引用吧!请高手指点一二
...全文
3486
8
打赏
收藏
synchronized(this),这个this指的是什么???
public synchronized void Push(char c) { // :-) } 这里synchronized 同步的是什么?我一直没有搞懂,我知道应该同步共享的变量,可是难以理解,尤其是synchronized(this),这个this是什么?!不会是Class的引用吧!请高手指点一二
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
fantasy471503202
2010-06-26
打赏
举报
回复
synchronized加锁不管是加在方法上还是,直接加在一个对象上synchronized(this或者obj),一个对象只能加上一个锁,加在方法上表示,多个线程中run()方法如果调用执行了这个加锁的方法,那么在同一时刻只能有一个线程来访问这个方法。
如果直接synchronize(this或者obj)就表示多个线程想使用this对象或者obj对象中的方法或者变量,那么同一时刻只能有一个线程能够获得synchronized这个锁,并且进入此对象执行对象中的方法或者改变变量。
fantasy471503202
2010-06-26
打赏
举报
回复
synchronized加锁不管是加在方法上还是,直接加在一个对象上synchronized(this或者obj),一个对象只能加上一个锁,加在方法上表示,多个线程中run()方法如果调用执行了这个加锁的方法,那么在同一时刻只能有一个线程来访问这个方法。
如果直接synchronize(this或者obj)就表示多个线程想使用this对象或者obj对象中的方法或者变量,那么同一时刻只能有一个线程能够获得synchronized这个锁,并且进入此对象执行对象中的方法或者改变变量。
lianming2010
2010-06-24
打赏
举报
回复
很早的贴了,依然有收获
zero8223
2002-10-22
打赏
举报
回复
但是我要同步的的确是一个变量啊,这和对象有什么关系啊
breeze的一切
2002-10-10
打赏
举报
回复
非也,要同步的是一段代码,这段代码可以由多个线程访问,为了达到同步的效果,于是java就设置了对象锁这个东西,一个线程要访问一段被同步的代码(synchronized所修饰)就必须获得它的对象锁,同时他还会把对象锁锁起,这样在这个现存释放这个对象锁前其他线程是不能获得这个对象锁的,这样就能达到同步的目的,所以synchronized(Object)因该是一个对象的实例,是什么对象都可以
zero8223
2002-10-10
打赏
举报
回复
事实上要同步的是个变量啊,比如char c,那怎么和this有关呢?
我想应该是synchronized(c)比较合理吧?!?!?
北极猩猩
2002-10-08
打赏
举报
回复
sychronized(this)是对对象自身的同步,就是你在访问自己的成员是需要进行同步访问。
实际上
public synchronized void Push(char c)
{
// :-)
}
相当于
public void Push(char c)
{
synchronized(this){
// :-)
}
}
qxjavajava
2002-10-08
打赏
举报
回复
this 是当前对象。也就是我们在同步里提到的对象锁。
synchronized void Push(char c)
-----------在这里,同步的是方法
其实synchronized(Object o)这是块的同步,只要得到对象o,就可以开始这个代码块,而synchronized(this)是最泛泛得同步,只要有个对象就可以同步,
synchronized
(this)锁的是什么?同步静态方法,同步非静态方法,锁的都是什么?
synchronized
(this)锁的是什么?同步静态方法,同步非静态方法,锁的都是什么?
synchronized
(this)锁定的是对象还是方法
synchronized
(this)锁住的到底是对象还是方法?从结果可以看出,线程1并未等待另一个线程执行完,而是互相争夺执行权,谁也没让着谁。线程类JavaFunTest在main方法中创建了两个线程。由此看出,
synchronized
(this)锁住的是对象。从结果来看,线程1执行完,线程0才执行,线程锁发挥作用了。1.首先我们先给两个线程类传入不同测试对象。2.其次我们给两个线程类传入相同的对象。...
关于
synchronized
(this)中this
指
的是什么意思
public class
Synchronized
DEmo { public static void main(String[] args) { TestThread tt = new TestThread(); Thread t1 = new Thread(tt); ...
synchronized
(this)
一、当两个并发线程访问同一个对象object中的这个
synchronized
(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。 二、然而,当一个线程访问object的一个
synchronized
(this)同步代码块时,另一个线程仍然可以访问该object中的非
synchronized
(this)同步代码块。 三、尤其关键的...
synchronized
(this)、
synchronized
(class)与
synchronized
(Object)的区别
在多线程开发中,我们经常看到
synchronized
(this)、
synchronized
(*.class)与
synchronized
(任意对象)这几种类型同步方法。
Java SE
62,634
社区成员
307,269
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章