我正在处理一个竞争条件,我相信在我的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) {
    ...
  }
}

java匿名类和同步和“这个”的更多相关文章

  1. Swift学习小结之对象和类

  2. Swift之旅四对象和类

    Swift里并不要求类必须继承任何标准的父类,所以如果需要的话可以省略掉父类。试一试加一个NamedShape的子类Circle,有radius属性,并且在初始化器中接收该参数。除了简单存储值外,属性还可以加getter和setter。注意EquilateralTriangle类的初始化器有三步不同:设置子类定义的属性值。如果不需要计算属性值但任然要在设置了新值之前或之后运行一段代码的话,就要用到willSet和didSet。后的所有东西都会被忽略,而且整个表达式的值是nil。

  3. Swift学习—对象和类

    上个版本的Shape类缺失了一个重要的东西:通过初始化器来创建一个实例。除了简单的存储属性,属性还有getter和setter方法。对于EquilateralTriangle中的初始化器做了三件事:1.设置子类声明的属性的值2.调用父类的初始化器3.改变被父类定义的属性值。如果你不需要计算属性但是又需要在设置一个新值之后,在运行之前提供一些代码,可以用willset和didset。

  4. 类和对象

    一个属性的声明则是在类里作为常量或变量声明的,除了是在类的上下文中。构造器的生命跟函数一样,除了会创建类的实例。使用deinit来创建一个析构器,来执行对象销毁时的清理工作。子类名后加父类的名字,以冒号分隔。子类的方法可以通过标记override重载父类中的实现,而没有override的会被编译器看作是错误。例如,下面的类要保证其三角的边长等于矩形的变长。"到操作符之前类似于方法属性。

  5. Swift面向对象中类和对象的属性

    Swift中类和对象的属性分为三种:储存属性,计算属性和类属性。

  6. Swift:什么时候使用结构体和类

    发布于2015年8月14日世界上对swift持续不断的讨论话题中有一个就是什么时候使用结构体什么时候使用类。这个例子对应下面Swift的举例:和之前的打印结果一样:值类型的体验值类型不是一个新的概念,但是对于很多人来说他们觉得这是新的。很多认为“一切皆对象”的语言如Python、JavaScript等也都只有引用类型。Swift对此说“yes”,那也就意味着Array,Dictionary和String都是结构体而不是类。

  7. Swift 学习笔记 5-对象和类

    欢迎加QQ群讨论:157672725对象和类1.创建类:class+类名2.类中属性的声明和常量、变量一样,唯一的区别就是它们的上下文是类。

  8. Swift线程安全详解-概念,三种锁,死锁,Atomic,synchronized

    研究了下,是线程安全问题。UIKit以及Fundation事实上,大多数Cocoa提供的Api都不是线程安全的,尤其是与UI相关的UIKit,只能在主线程上操作。需要线程安全的时候,开发者自己维护就可以了。用来加锁,解锁。关于ObjectiveC参考这篇文章Atomic一个非Atomic的属性在非ARC的时候像这样可以看到,如果在多线程同时set的情况下,可能会造成release两次。Property的Runtime对应的C代码为可以看到,如果是nonatomic的,synchronized可以看看这个S

  9. Swift 类和结构体(八)

    }2.类和结构体的实例使用初始化方法来生成新的实例

  10. Swift快速入门之对象和类

    定义类使用类如下:可以看到,swift相比ObjC回归正常了,类是class而不是interface了。创建类的实例时,其语法跟ObjC之外的语言一致了,通过“()”里的参数对应某个构造方法。构造方法构造方法的名字都叫“init”。析构方法与构造方法对应,析构方法叫做“deinit”。并且必须先初始化了儿子的属性后才能调用爹的构造方法,这样规定是为了避免坑爹。

随机推荐

  1. 基于EJB技术的商务预订系统的开发

    用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。总的来说,EJB是一个组件事务监控的标准服务器端的组件模型。基于EJB技术的系统结构模型EJB结构是一个服务端组件结构,是一个层次性结构,其结构模型如图1所示。图2:商务预订系统的构架EntityBean是为了现实世界的对象建造的模型,这些对象通常是数据库的一些持久记录。

  2. Java利用POI实现导入导出Excel表格

    这篇文章主要为大家详细介绍了Java利用POI实现导入导出Excel表格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. Mybatis分页插件PageHelper手写实现示例

    这篇文章主要为大家介绍了Mybatis分页插件PageHelper手写实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. (jsp/html)网页上嵌入播放器(常用播放器代码整理)

    网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助

  5. Java 阻塞队列BlockingQueue详解

    本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景,通过实例代码介绍了Java 阻塞队列BlockingQueue的相关知识,需要的朋友可以参考下

  6. Java异常Exception详细讲解

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等

  7. Java Bean 作用域及它的几种类型介绍

    这篇文章主要介绍了Java Bean作用域及它的几种类型介绍,Spring框架作为一个管理Bean的IoC容器,那么Bean自然是Spring中的重要资源了,那Bean的作用域又是什么,接下来我们一起进入文章详细学习吧

  8. 面试突击之跨域问题的解决方案详解

    跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。那怎么解决这个问题呢?接下来我们一起来看

  9. Mybatis-Plus接口BaseMapper与Services使用详解

    这篇文章主要为大家介绍了Mybatis-Plus接口BaseMapper与Services使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  10. mybatis-plus雪花算法增强idworker的实现

    今天聊聊在mybatis-plus中引入分布式ID生成框架idworker,进一步增强实现生成分布式唯一ID,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部