加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java匿名类和同步和“这个”

发布时间:2020-12-14 05:09:04 所属栏目:Java 来源:网络整理
导读:我正在处理一个竞争条件,我相信在我的JAVA GUI中. 我有一些方法在匿名类中创建一个“匿名方法”,如下所示: synchronized foo(){ someMethod(new TimerTask() { public synchronized run() { //stuff } };} QUESTION:是否在TimerTask对象或foo所在的类上运
我正在处理一个竞争条件,我相信在我的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) {
    ...
  }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读