我正在处理一个竞争条件,我相信在我的JAVA GUI中.
synchronized foo() { someMethod(new TimerTask() { public synchronized run() { //stuff } }; }
QUESTION:是否在TimerTask对象或foo所在的类上运行方法同步?
QUESTION2:如果我在run()声明中摆脱了“synchronized”,而在run()正文中有一个synchronized(this){}块,那么“this”是指TimerTask对象或者对象是包含foo()的方法的一个实例?
请帮我在这里
谢谢,
JBU
解决方法
运行方法在TimerTask本身上同步.同步
instance methods are always synchronized on
this
对象. (Class方法在Class对象上同步.)
如果要在其对象上进行同步,则需要qualify the this
keyword.假设foo()是Timer类的run()方法中的Bar类的成员,可以使用
public void run() { synchronized(Bar.this) { ... } }
原文地址:https://www.jb51.cc/java/123330.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。