jbu*_*jbu 11 java synchronization anonymous class this
我相信,我正在处理JAVA GUI中的竞争条件.
我有一些方法在匿名类中创建一个"匿名方法",如下所示:
synchronized foo()
{
someMethod(new TimerTask()
{
public synchronized run()
{
//stuff
}
};
}
Run Code Online (Sandbox Code Playgroud)
问题:在TimerTask对象或foo所在的类上是否同步了run方法?
问题2:如果我在run()声明中删除了"synchronized",而在run()体内有一个synchronized(this){}块,那么"this"会引用TimerTask对象或者对象是包含foo()的方法的实例?
请帮帮我.
谢谢,jbu
eri*_*son 14
该run方法在TimerTask自身上同步.同步实例方法始终在this对象上同步.(类方法在Class对象上同步.)
如果要同步对象foo是成员,则需要限定this关键字.假设foo()是Bar类的成员,在run()方法里面TimerTask,你可以使用
public void run() {
synchronized(Bar.this) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5227 次 |
| 最近记录: |