`
uuhorse
  • 浏览: 64861 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

Java并发程序设计-注解

阅读更多

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++;
	}

}


以上注解均为非标准的Annotation,自定义注解方式可以参考其他资料:
http://www.cnblogs.com/phoebus0501/archive/2011/02/21/1960077.html

定制的Annotation如下:
@Documented
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.CLASS)
public @interface ThreadSafe {
}


@Documented
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.CLASS)
public @interface NotThreadSafe {
}


@Documented
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.CLASS)
public @interface Immutable {
}


@Target( { ElementType.FIELD, ElementType.METHOD })
@Retention(RetentionPolicy.CLASS)
public @interface GuardedBy {
    String value();
}


附件中附以上四个注解的jar包(javax.annotation.concurrent.*)
分享到:
评论

相关推荐

    Java语言程序设计-基础篇(原书第8版)原书代码_资料

    《Java语言程序设计-基础篇(原书第8版)》是一本深入浅出介绍Java编程的权威教材,由知名计算机科学家Daniel Liang撰写。这本书不仅覆盖了Java的基础知识,还包含了实践案例和丰富的学习资源,如代码示例、图像和音频...

    Java语言程序设计-进阶篇(原书第10版 中英文)

    《Java语言程序设计-进阶篇》是Java编程领域的一本经典教材,其原书第10版提供了中英文双语版本,对于学习者来说,无论是深入理解Java语言的精髓,还是提升跨文化交流能力,都是不可多得的资源。本教材主要针对已经...

    java语言程序设计-PPt

    Java语言程序设计是计算机科学领域中的一个重要主题,尤其对于初学者和有志于软件开发的人员来说,掌握Java编程基础至关重要。本课件"java语言程序设计-PPt"提供了全面且易于理解的Java编程教程,旨在帮助学习者快速...

    Java 语言程序设计-进阶篇(原书第10版).pdf

    《Java 语言程序设计-进阶篇》是学习Java编程的高级教程,源自原书第10版,针对已经掌握了Java基础知识的读者,深入探讨了Java的高级特性和技术。这本书涵盖了多个关键知识点,旨在帮助开发者提升Java编程技能,...

    Java语言程序设计-进阶篇(原书第10版).pdf

    《Java语言程序设计-进阶篇》是针对已经掌握Java编程基础的学习者提供的一本深入学习书籍,尤其适合想要提升编程技巧和理解高级特性的读者。这本书基于原书的第10版,意味着它涵盖了最新的Java版本特性,比如Java 8...

    Java语言程序设计-原书第10版-答案及源代码

    《Java语言程序设计-原书第10版》是一本深度探讨Java编程的权威教材,其答案及源代码部分是学习者深入理解Java编程的重要参考资料。这个压缩包包含的资源旨在帮助读者解决在学习过程中遇到的问题,同时也提供了作者...

    Java语言程序设计-进阶篇(原书第8版) - checkpoints

    《Java语言程序设计-进阶篇(原书第8版)》是一本深入探讨Java编程技术的书籍,其中"checkpoints"章节旨在帮助读者通过一系列练习和自我评估来巩固和提高他们的Java编程技能。在这一部分,我们将会探索Java语言的高级...

    Java语言程序设计-进阶篇-原书第8版

    但根据标题和描述中提到的书籍《Java语言程序设计-进阶篇-原书第8版》,我可以为您详细说明与Java语言程序设计相关的知识点,以满足您的需求。 《Java语言程序设计-进阶篇-原书第8版》是一本关于Java编程语言深入...

    Java语言程序设计-进阶篇(原书第8版)

    《Java语言程序设计-进阶篇(原书第8版)》是一本深入探讨Java编程技术的权威书籍,专为已经掌握了Java基础的开发者而设计。本书旨在帮助读者提升Java编程技能,掌握更高级的概念和技术,包括面向对象设计、并发处理、...

    Java语言程序设计-基础篇(原书第8版)

    《Java语言程序设计-基础篇(原书第8版)》是学习Java编程的重要参考资料,由资深编程专家Daniel Levenson和Eugene墙著。这本书深入浅出地介绍了Java编程语言的基础概念和技术,旨在帮助初学者掌握Java编程的核心知识...

    Java语言程序设计-基础篇(原书第8版)

    《Java语言程序设计-基础篇(原书第8版)》是学习Java编程语言的一本经典教材,适合初学者入门。这本书深入浅出地讲解了Java编程的基础概念和技术,为读者构建坚实的编程基础。以下是对书中主要知识点的详细阐述: 1....

    Java程序设计课件-哈威版

    《Java程序设计课件-哈威版》是针对Java初学者和进阶者精心准备的一套教学资源,由经验丰富的教师编排,旨在系统性地介绍Java编程语言的基础概念、核心语法以及实际应用。这份课件包含了多个部分,分别对应Java编程...

    java语言程序设计 第八版编程题答案

    《Java语言程序设计 第八版》是一本深受程序员和学生喜爱的经典教材,它全面而深入地介绍了Java编程语言。本书的第八版针对现代编程环境进行了更新,涵盖了最新的Java SE版本特性,旨在帮助读者掌握核心的Java编程...

    Java程序设计一种跨学科的方法 英文版

    《Java程序设计一种跨学科的方法》是一本专为学习Java编程语言而编写的教材,英文版则为非母语为中文的学习者提供了更多的选择。这本书深入浅出地讲解了Java编程的基础知识,同时也注重与其他学科的交叉应用,使得...

    面向对象程序设计-Java(第二版)

    面向对象程序设计-Java(第二版)是一本深入讲解Java编程的教材,旨在教授如何使用面向对象的思想来构建软件系统。在Java编程中,面向对象是核心概念,它包括类、对象、继承、封装和多态等核心概念。以下是根据标题...

    Java程序设计-电子教案.rar

    Java程序设计是计算机科学中的一个核心课程,尤其对于软件开发人员和编程爱好者来说,掌握Java语言至关重要。这个"Java程序设计-电子教案.rar"压缩包显然包含了一套完整的教学资源,旨在帮助学习者深入理解Java编程...

    Java语言程序设计

    根据给定的信息,“Java语言程序设计”这一课程主要面向的是中国石油大学(北京)远程教育学院的学生们。从描述来看,这份资料似乎是一份学习指南或者是考试复习资料的一部分,旨在帮助学生们更好地掌握Java编程的...

    java语言程序设计精品课件

    【Java语言程序设计精品课件】是一套深度探讨Java编程的教育资源,旨在为学习者提供全面而深入的Java知识体系。课程内容丰富,涵盖了从基础语法到高级特性的方方面面,适合初学者和有一定经验的开发者进一步提升技能...

Global site tag (gtag.js) - Google Analytics