`

java 线程方面的几个注解

阅读更多


转自: 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类的直接锁对象保护。而不是这个类的某个实例的锁对象。

分享到:
评论

相关推荐

    java多线程处理数据库数据

    在Java编程中,多线程处理是提升程序性能和效率的重要手段,特别是在处理大量数据库数据时。本主题将深入探讨如何使用Java的并发包(java.util.concurrent)来实现多线程对数据库数据的批量处理,包括增、删、改等...

    线程中获取spring 注解bean

    当需要在线程中获取Spring注解的bean时,有几种常见的方法: 1. **ThreadLocal**:Spring提供了一种名为`ThreadLocalTargetSource`的特殊`TargetSource`实现,可以将bean实例绑定到当前线程。这样,每个线程都有其...

    Java基础-注解和反射

    了解类加载器的工作原理对于深入理解Java应用程序的行为至关重要,特别是在多线程和JVM内部结构方面。 以上内容涵盖了Java中注解和反射的基础知识以及它们的实际应用,这对于理解和开发复杂的企业级Java应用程序是...

    java纤程库-quasar,线程的线程

    Quasar 与传统 Java 线程模型相比有以下几点不同: - **资源消耗**:Quasar 的纤程占用的资源远少于传统线程。 - **上下文切换**:纤程间的上下文切换开销更低。 - **并发能力**:Quasar 支持更高数量的并发任务。 ...

    中软国际java基础

    本教材可能包含以下几个部分: 1. **Java环境搭建**:讲解如何安装Java Development Kit (JDK) 和配置环境变量,这是进行Java编程的必要步骤。 2. **基本语法**:介绍Java的语法结构,包括数据类型(如整型、浮点...

    think in java 4 练习题答案

    在Java的学习过程中,理解和掌握以下几个关键知识点至关重要: 1. **基础语法**:Java是一种静态类型的面向对象编程语言,其语法严谨。基础语法包括变量声明、数据类型(如基本类型和引用类型)、运算符、流程控制...

    JAVA笔试题-包含JAVA各个方面的笔试题

    在准备Java相关的笔试或面试时,掌握以下几个关键知识点至关重要: 1. **基础语法**:理解并掌握Java的基础语法,如数据类型(基本类型与引用类型)、变量、运算符、流程控制语句(if-else,switch-case,for,...

    java并发测试

    在并发测试中,我们通常关注以下几个方面: 1. **性能测试**:衡量多线程环境下接口的响应时间和吞吐量,以确保其性能达标。这可能涉及到JMH(Java Microbenchmark Harness)或其他性能测试框架的使用。 2. **正确...

    java基础的注解和反射的相关知识点总结

    在内存中,类的相关信息分布在以下几个区域: - **方法区(Method Area)**:存储所有类的结构信息,包括常量池、字段信息和方法信息,线程共享。 - **堆(Heap)**:存储对象实例和数组,也是线程共享,不同对象有...

    java几个常用的jar包

    在给出的标题和描述中,提到了几个常用的Java jar包,分别是:activation.jar、logging、java-unrar-0.3.jar、javolution.jar和junit-3.8.jar。每个jar包都有其特定的功能和用途,下面将详细介绍这些jar包及其相关的...

    servlet与Struts action线程安全问题分析

    3. **使用线程局部变量**:Java的`ThreadLocal`类可以为每个线程创建独立的变量副本,避免了线程间的冲突。 4. **设计无状态的Servlet**:Servlet不保留任何用户请求之间的状态,每次请求都是独立的,这样的Servlet...

    几个java小程序——自己写的

    在"几个java小程序——自己写的"这个主题中,我们可以深入探讨Java编程的一些关键知识点。 1. **面向对象编程(OOP)基础**:Java的核心是基于面向对象编程的原理,包括封装、继承和多态。封装意味着隐藏实现细节,...

    Java知识的讲解(一些JAVA方面知识热点)

    本文将深入探讨Java的几个重要知识点,包括基础概念、图形界面、数字验证码的实现以及TOMCAT服务器的使用。 首先,Java的基础是任何Java开发者必须掌握的。这包括基本语法、数据类型(如整型、浮点型、字符型和布尔...

    java 扫雷源代码 带有详细的注释

    在这个Java版本中,游戏的核心逻辑会体现在以下几个方面: 1. **棋盘类(Board)**:这是游戏的主体部分,通常会用一个二维数组来表示棋盘,每个元素代表一个格子,可以是雷、数字或空格。数组中的数字表示周围8个...

    JAVA 扫雷1.2 源代码 详细注释

    该扫雷游戏包含以下几个核心知识点: 1. **事件处理**:JAVA中的事件处理是通过监听器(Listener)机制实现的,例如鼠标点击事件和键盘输入事件。在这个程序中,用户与界面的交互,如点击格子或按下键盘,都会触发...

    java 达内JAVA课件

    达内JAVA课件可能涵盖了以下几个核心知识点: 1. **基础语法**:包括变量、数据类型、运算符、流程控制(如if语句、for循环、while循环)、方法等。这些是编写任何程序的基础。 2. **面向对象编程**:Java是面向...

    java 参考手册 (.chm)

    在Java参考手册中,你可以找到以下几个主要部分: 1. **类和接口**:手册详细列出了所有公共类和接口,如`java.lang.Object`(所有类的基类)、`java.util.ArrayList`(一种动态数组实现)和`java.io.File`(用于...

    java技术开发大全

    书中内容可能会涉及以下几个方面: - Java基础语法:数据类型、控制流、数组、异常处理、输入输出等; - 面向对象编程:类与对象、继承、封装、多态等概念以及它们在Java中的实现; - 高级特性:泛型、集合框架、...

    使用java定时器的几种方式

    Java Timer的一个重要特点是默认情况下,只要Timer线程在运行,程序就会持续运行。终止Timer线程有几种方法,比如在run方法中调用timer的cancel方法、将Timer线程设置为守护线程等。 总之,Java中实现定时任务的三...

    一些java简单程序

    在Java编程中,初学者通常会从以下几个关键知识点开始学习: 1. **环境搭建**:首先,你需要下载并安装Java Development Kit (JDK),设置好环境变量,包括JAVA_HOME、PATH和CLASSPATH,确保可以在命令行中运行Java...

Global site tag (gtag.js) - Google Analytics