问题 如何使用JCIP进行编码(Java Concurrency in Practice)


最近阅读了JCIP注释,它们看起来很酷。去了网站,看了看源头。唯一的问题是src jar只包含注释......我没有看到我在哪里可以找到实际的注释处理器  什么!我只是在错误的地方寻找,或者这些不是真正的Java注释(意思是,没有办法强制执行 @Immutable 什么时候用它来标记一个类)?

  • @Immutable
  • @GuardedBy

4442
2018-04-28 16:25


起源

请编辑您的问题并解释JCIP是什么。我假设你的意思是Java Concurrency in Practice,但它应该被扩展。而且我不熟悉你的意思。 - Gray
对不起那里的迷路! - IAmYourFaja


答案:


FindBugs的 支持那些注释。对这些注释和其他注释的支持描述如下 这个文档页面


11
2018-04-28 16:41



那么JCIP注释 - 它们的意义何在?它们只是JCIP示例中使​​用的“空心”注释,以帮助读者遵循,或者JCIP和FindBugs之间是否存在某种联盟? - IAmYourFaja
一般来说,注释就是:注释。它们注释您的源和/或字节代码。所有注释(除非它们纯粹用于文档目的)都应该由某些工具处理。在JCIP注释的情况下,FindBugs就是这样一个工具。如果您将某个类注释为不可变类,并且该类实际上不是不可变的,则FindBugs将在检查此类时生成警告。 JCIP注释有两个目的:它们记录了代码的设计,可以通过FindBugs和其他工具来检查它们是否符合预期的设计。 - JB Nizet


IntelliJ IDE将使用这些注释来查找代码中的错误。如果您注释变量是@GuardedBy(some_lock),IDE将标记您访问它的情况,而不对其进行正确同步。这非常有用。


4
2018-05-23 11:36





JCIP注释是记录并发契约的正式方式,例如此成员是“@GuardedBy”这个字段。

它们在您的代码中不会执行任何功能。


1
2018-04-29 12:02