2

我是 java 线程的新手,现在阅读“java concurrency in practice”。正如您可能理解的那样,我正在尝试做任何示例,但不能。当我尝试使用@Immutable注释时 IDE(Idea) 将其下划线为红色。这可能的原因是什么?

4

3 回答 3

6

原因是您的类路径中没有正确的 jar。

这个 jar 的 maven 工件是:

<dependency>
    <groupId>net.jcip</groupId>
    <artifactId>jcip-annotations</artifactId>
    <version>1.0</version>
<dependency>

如果您的类路径中没有此 jar,则说明您没有注释。

但是请注意,这已被 JSR 305 取代。还有一个用于实现该 JSR 的 Maven 工件:

<dependency>
    <groupId>com.google.code.findbugs</groupId>
    <artifactId>jsr305</artifactId>
    <version>2.0.1</version>
</dependency>

(旁注:阅读的绝佳选择!这是所有 Java 开发人员的必备书籍)

于 2013-05-27T09:58:59.747 回答
1

下载提供 jcip 注释的 jar 文件并将其添加到模块依赖项中。

于 2013-05-27T09:58:49.480 回答
1

就使用那本书的例子而言,所有这些注释,比如@ThreadSafe、@Immutable/@Threadsafe,它们都只是象征性的(虽然上面的 fge 是正确的,你也可以使用这些 jar,但是从学习的角度来看,只是别理他们)

所以,干脆忽略它们。在任何地方,如果您看到 @Immutable,它仅仅意味着编写的代码是 IMMUTABLE,凭借代码实现。

你根本不需要任何罐子。只需从您的示例中删除这些注释:)

于 2013-05-27T10:25:32.527 回答