`
- 浏览:
32721 次
-
转自: http://hi.baidu.com/youziguo/item/0d1c7004b1e9f1d4dde5b0ed
gccr
Java同步注解(Annotation)解释。
JDK 5.0 以后增加了注解。就是@后面加一个名称。有其自身的含意。跟C#里的Attributes似的。
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类的直接锁对象保护。而不是这个类的某个实例的锁对象。
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
在Java编程中,多线程处理是提升程序性能和效率的重要手段,特别是在处理大量数据库数据时。本主题将深入探讨如何使用Java的并发包(java.util.concurrent)来实现多线程对数据库数据的批量处理,包括增、删、改等...
当需要在线程中获取Spring注解的bean时,有几种常见的方法: 1. **ThreadLocal**:Spring提供了一种名为`ThreadLocalTargetSource`的特殊`TargetSource`实现,可以将bean实例绑定到当前线程。这样,每个线程都有其...
了解类加载器的工作原理对于深入理解Java应用程序的行为至关重要,特别是在多线程和JVM内部结构方面。 以上内容涵盖了Java中注解和反射的基础知识以及它们的实际应用,这对于理解和开发复杂的企业级Java应用程序是...
Quasar 与传统 Java 线程模型相比有以下几点不同: - **资源消耗**:Quasar 的纤程占用的资源远少于传统线程。 - **上下文切换**:纤程间的上下文切换开销更低。 - **并发能力**:Quasar 支持更高数量的并发任务。 ...
本教材可能包含以下几个部分: 1. **Java环境搭建**:讲解如何安装Java Development Kit (JDK) 和配置环境变量,这是进行Java编程的必要步骤。 2. **基本语法**:介绍Java的语法结构,包括数据类型(如整型、浮点...
在Java的学习过程中,理解和掌握以下几个关键知识点至关重要: 1. **基础语法**:Java是一种静态类型的面向对象编程语言,其语法严谨。基础语法包括变量声明、数据类型(如基本类型和引用类型)、运算符、流程控制...
在准备Java相关的笔试或面试时,掌握以下几个关键知识点至关重要: 1. **基础语法**:理解并掌握Java的基础语法,如数据类型(基本类型与引用类型)、变量、运算符、流程控制语句(if-else,switch-case,for,...
在并发测试中,我们通常关注以下几个方面: 1. **性能测试**:衡量多线程环境下接口的响应时间和吞吐量,以确保其性能达标。这可能涉及到JMH(Java Microbenchmark Harness)或其他性能测试框架的使用。 2. **正确...
在内存中,类的相关信息分布在以下几个区域: - **方法区(Method Area)**:存储所有类的结构信息,包括常量池、字段信息和方法信息,线程共享。 - **堆(Heap)**:存储对象实例和数组,也是线程共享,不同对象有...
在给出的标题和描述中,提到了几个常用的Java jar包,分别是:activation.jar、logging、java-unrar-0.3.jar、javolution.jar和junit-3.8.jar。每个jar包都有其特定的功能和用途,下面将详细介绍这些jar包及其相关的...
3. **使用线程局部变量**:Java的`ThreadLocal`类可以为每个线程创建独立的变量副本,避免了线程间的冲突。 4. **设计无状态的Servlet**:Servlet不保留任何用户请求之间的状态,每次请求都是独立的,这样的Servlet...
在"几个java小程序——自己写的"这个主题中,我们可以深入探讨Java编程的一些关键知识点。 1. **面向对象编程(OOP)基础**:Java的核心是基于面向对象编程的原理,包括封装、继承和多态。封装意味着隐藏实现细节,...
本文将深入探讨Java的几个重要知识点,包括基础概念、图形界面、数字验证码的实现以及TOMCAT服务器的使用。 首先,Java的基础是任何Java开发者必须掌握的。这包括基本语法、数据类型(如整型、浮点型、字符型和布尔...
在这个Java版本中,游戏的核心逻辑会体现在以下几个方面: 1. **棋盘类(Board)**:这是游戏的主体部分,通常会用一个二维数组来表示棋盘,每个元素代表一个格子,可以是雷、数字或空格。数组中的数字表示周围8个...
该扫雷游戏包含以下几个核心知识点: 1. **事件处理**:JAVA中的事件处理是通过监听器(Listener)机制实现的,例如鼠标点击事件和键盘输入事件。在这个程序中,用户与界面的交互,如点击格子或按下键盘,都会触发...
达内JAVA课件可能涵盖了以下几个核心知识点: 1. **基础语法**:包括变量、数据类型、运算符、流程控制(如if语句、for循环、while循环)、方法等。这些是编写任何程序的基础。 2. **面向对象编程**:Java是面向...
在Java参考手册中,你可以找到以下几个主要部分: 1. **类和接口**:手册详细列出了所有公共类和接口,如`java.lang.Object`(所有类的基类)、`java.util.ArrayList`(一种动态数组实现)和`java.io.File`(用于...
书中内容可能会涉及以下几个方面: - Java基础语法:数据类型、控制流、数组、异常处理、输入输出等; - 面向对象编程:类与对象、继承、封装、多态等概念以及它们在Java中的实现; - 高级特性:泛型、集合框架、...
Java Timer的一个重要特点是默认情况下,只要Timer线程在运行,程序就会持续运行。终止Timer线程有几种方法,比如在run方法中调用timer的cancel方法、将Timer线程设置为守护线程等。 总之,Java中实现定时任务的三...
在Java编程中,初学者通常会从以下几个关键知识点开始学习: 1. **环境搭建**:首先,你需要下载并安装Java Development Kit (JDK),设置好环境变量,包括JAVA_HOME、PATH和CLASSPATH,确保可以在命令行中运行Java...