元数据的作用

如果要对于元数据的作用进行分类,目前还没有明确的定义,不过我们可以根据它所起的作用,大致可分为三类:

l         编写文档:通过代码里标识的元数据生成文档。

l         代码分析:通过代码里标识的元数据对代码进行分析。

l         编译检查:通过代码里标识的元数据让编译器能实现基本的编译检查。

Java并发编程中,用到了一些专门为并发编程准备的 Annotation。
主要包括三类:
1、类 Annotation(注解)
就像名字一样,这些注解是针对类的。主有要以下三个:
@Immutable
@ThreadSafe
@NotThreadSafe

@ThreadSafe 是表示这个类是线程安全的。具体是否真安全,那要看实现者怎么实现的了,反正打上这个标签只是表示一下。不线程安全的类打上这个注解也没事儿。
@Immutable 表示,类是不可变的,包含了 @ThreadSafe 的意思。
      @NotThreadSafe 表示这个类不是线程安全的。如果是线程安全的非要打上这个注解,那也不会报错。

这三个注解,对用户和维护者是有益的,用户可以立即看出来这个类是否是线程安全的,维护者则是可以根据这个注解,重点检查线程安全方面。另外,代码分析工具可能会利用这个注解。

2、域 Annotation(注解)
域注解是对类里面成员变量加的注解。
3、方法 Annotation(注解)
方法注解是对类里面方法加的注解。

域注解和方法注解都是用@GuardedBy( lock )来标识。里面的Lock是告诉维护者:这个状态变量,这个方法被哪个锁保护着。这样可以强烈的提示类的维护者注意这里。

@GuardedBy( lock )有以下几种使用形式:

1、@GuardedBy( "this" ) 受对象内部锁保护
2、@GuardedBy( "fieldName" ) 受 与fieldName引用相关联的锁 保护。
3、@GuardedBy( "ClassName.fieldName" ) 受 一个类的静态field的锁 保存。
4、@GuardedBy( "methodName()" ) 锁对象是 methodName() 方法的返值,受这个锁保护。
5、@GuardedBy( "ClassName.class" ) 受 ClassName类的直接锁对象保护。而不是这个类的某个实例的锁对象。

最新文章

  1. gulp 自动添加版本号
  2. ASP.NET中将导出的数据以UTF-8编码方式进行存储
  3. c# 参数传递
  4. nth-of-type和nth-child的区别
  5. Windows下关于Composer使用时出现的问题及解决办法
  6. oracle中存储过程详解
  7. angualr4 路由 总结笔记
  8. SOFA 源码分析 — 预热权重
  9. codeforces#1136 C. Nastya Is Transposing Matrices(找规律)
  10. Java面试题之Forward和Redirect的区别
  11. openstack创建虚拟流程、各组件介绍
  12. 阻止a链接跳转方法总结
  13. python 实现求一个集合的子集
  14. 作业20171130 final发布 成绩
  15. Java 清理和垃圾回收
  16. MassTransit
  17. 兼容多浏览器的网页复制插件(ZeroClipboard)
  18. mysql innodb 从 ibd 文件恢复表数据
  19. 搭建一个redis高可用系统
  20. unity5.6里Baked Lighting下面几个Lighting Mode的解释

热门文章

  1. shiro jwt 构建无状态分布式鉴权体系
  2. python2.x 与 python3.x的区别
  3. learning ddr init power-up initialization sequence
  4. java的八大排序
  5. prototype:构造函数的真相、原型链
  6. js的event.preventDefault()与event.stopPropagation()
  7. bzoj1261
  8. win10企业版激活
  9. java有关构造器的面试题详解
  10. 第三节 java 函数