一介绍
<dependency>
<groupId>net.jcip</groupId>
<artifactId>jcip-annotations</artifactId>
<version>1.0</version>
</dependency>
注解包括下面的一些内容
@ThreadSafe线程安全的标记在jcip.net中定义的。jcip是Java Concurrency In Practice的缩写。如果你不想在你的项目中使用jcip标记,可以移除@ThreadSafe和相关的引用,但还是希望能够尽量使用它。它们可以提供很严格的注释信息,却不会修改编译和运行环境,但是却非常有用在你想知道一个类的作者提供什么样的线程安全的时候。这在修改别人的代码的时候是很需要的。
二用法
1. 类Annotation
3个Annotation描述类的可预期的线程安全保证:
@ThreadSafe:类是线程安全的;
@Immutable:类是不可变的(属性为final),不可变对象是线程安全的;
@NotThreadSafe:类不是线程安全的,如果类未加任何注解,则不能确定是否线程安全,认为是非线程安全的。
2. 域Annotation和方法Annotation
描述哪个状态变量被哪个锁保护着,以及哪个锁保护这些变量的信息:
@GuardedBy(lock):线程只有在持有了一个特定的锁(lock)后,才能访问某个域或方法;
@GuardedBy("this"):包换在对象中的内部锁(方法或域是这个对象的一个成员);
@GuardedBy("fieldName"):值与filedName引用的对象相关联的锁,或者是一个隐式锁(filedName没有引用一个Lock),或者是一个显示锁(filedName引用了一个Lock);
@GuardedBy("ClassName.fieldName"):类似于@GuardedBy("fieldName"),不过所引用的锁对象是存储在另一个类(或本类)中的静态域;
@GuardedBy("methodName()"):锁对象是methodName()方法的返回值;
@GuardedBy("ClassName.class"):ClassName类的直接量对象。
import javax.annotation.concurrent.*;
@ThreadSafe
public class Sequence {
@GuardedBy("this") private int value;
public synchronized int getNext() {
return value++;
}
}
- 大小: 12.3 KB
分享到:
相关推荐
第1章 简介 1.1 并发简史 1.2 线程的优势 1.2.1 发挥多处理器的强大能力 1.2.2 建模的简单性 1.2.3 异步事件的简化处理 1.2.4 响应更灵敏的用户界面 1.3 线程带来的风险 ...附录A 并发性标注 参考文献
前 言 第1章 简介 1.1 并发简史 1.2 线程的优势 1.2.1 发挥多处理器的强大能力 1.2.2 建模的简单性 1.2.3 异步事件的简化处理 1.2.4 响应更灵敏的用户界面 1.3 线程带来的风险 ...附录A 并发性标注
【Java狂神说笔记】是针对Java开发语言深入学习的一份综合笔记,涵盖了广泛的Java相关知识点,适合初学者和有一定经验的开发者进行提升。这份笔记的PDF版本详细讲解了Java的基础概念、进阶特性和实战应用,旨在帮助...
Java是一种广泛使用的面向对象的编程语言,以其跨平台、高性能和丰富的类库而闻名。"Java知识框架思维导图"是整理和理解Java核心技术体系的一种有效工具,它可以帮助学习者系统地掌握Java的核心概念和架构。下面将...
这些章节涵盖了Java在实际应用中的高级特性,如文件读写、网络通信、并发处理、动态加载类以及元数据标注。 第十二章:GUI编程 Java提供了丰富的Swing和JavaFX库来创建图形用户界面,这一章会教你如何创建窗口、...
7. **多线程**:Java支持并发编程,书中会讲解线程的创建、同步机制(如synchronized关键字、wait/notify机制)、线程池等,帮助开发者理解和解决多线程问题。 8. **泛型**:泛型引入了类型参数,增强了代码的类型...
一、Java并发编程 Java并发编程是指在Java程序中处理多个线程并行执行的技术。Java中的并发编程方法和类有:synchronized关键字、ReentrantLock类、Semaphore类、CountDownLatch类、ThreadPoolExecutor类等。这些...
《核心JAVA/CoreJava/》是一份非常重要的学习资源,它主要涵盖了Java这门编程语言的基础以及进阶知识。Java作为一种广泛应用于企业级应用、移动开发(尤其是Android平台)以及云计算等领域的编程语言,其核心概念和...
反射允许我们在运行时动态访问类的信息,而注解则可以用于代码的元数据标注,提升代码的可读性和可维护性。 最后,JavaFX或Swing库的使用可能会出现在图形用户界面(GUI)的案例中,教会我们如何创建桌面应用程序的...
Java是一种广泛使用的面向对象的编程语言,以其跨平台性、高效性和安全性著称。"java基础_java_源码"这个标题表明我们即将探讨的是Java编程的基础知识,这通常包括语言的核心概念、语法以及一些关键特性。描述中提到...
《Think in Java 3e 中文版》全面涵盖了类、对象、接口、多态、异常处理、集合框架、IO流、网络编程、并发处理等Java的核心概念,同时结合实际案例,让读者能够在实践中理解理论。此外,书中还讨论了设计模式和泛型...
13. **多线程**:Java内置了对多线程的支持,理解`Thread`类和实现`Runnable`接口是并发编程的基础。 14. **包装类**:Java为每个基本数据类型都提供了对应的包装类,如Integer, Double等,它们在处理对象和基本...
- **并发请求支持**:增强了 map 集合的并发访问能力。 #### 九、JDK 1.8 新特性 - **接口的默认方法**:Java 8 允许在接口中定义具有默认实现的方法。这极大地扩展了接口的功能,使得接口不仅可以定义行为,还...
4. **并发编程**:搜索引擎通常需要处理大量并发请求,Java的并发库如ExecutorService和Future可以有效管理线程资源。 四、源码分析 书中源代码可能涵盖了以下部分: 1. **数据获取与预处理**:包括爬虫模块和文本...
6. 多线程:如果处理大量图像,可以利用Java的多线程功能提高效率,比如通过ExecutorService创建线程池进行并发处理。 7. GUI设计:为了提供用户友好的界面,可能需要使用JavaFX或Swing来创建图形用户界面,用户...
源码中会展示如何利用Java的并发库,如ExecutorService和Future,来实现并行处理和任务调度。 8. **数据持久化(Data Persistence)**:搜索引擎需要存储大量数据,可能会使用关系型数据库(如MySQL)、非关系型...
8. **泛型和枚举**:泛型引入了类型参数,增强了代码的类型安全性和可重用性,而枚举类型提供了对固定集合值的更强大支持,这两部分内容在Java 5之后被引入,是现代Java编程不可或缺的部分。 9. **反射和注解**:...
9. **问题排查与调试**:面对Hibernate常见的问题,如空指针异常、并发问题、数据一致性问题等,如何进行排查和解决。 压缩包中的"JavaCenterHome"可能是该社区网站的主页或资源库的名称,可能包含各种文章、论坛...