summaryrefslogtreecommitdiffstats
path: root/jsr305/ri/src/main/java/javax/annotation/concurrent
diff options
context:
space:
mode:
authorYohann Roussel <yroussel@google.com>2014-03-19 16:25:37 +0100
committerYohann Roussel <yroussel@google.com>2014-03-20 15:13:33 +0100
commit4eceb95409e844fdc33c9c706e1dc307bfd40303 (patch)
treeee9f4f3fc79f757c79081c336bce4f1782c6ccd8 /jsr305/ri/src/main/java/javax/annotation/concurrent
parent3d2402901b1a6462e2cf47a6fd09711f327961c3 (diff)
downloadtoolchain_jack-4eceb95409e844fdc33c9c706e1dc307bfd40303.tar.gz
toolchain_jack-4eceb95409e844fdc33c9c706e1dc307bfd40303.tar.bz2
toolchain_jack-4eceb95409e844fdc33c9c706e1dc307bfd40303.zip
Initial Jack import.
Change-Id: I953cf0a520195a7187d791b2885848ad0d5a9b43
Diffstat (limited to 'jsr305/ri/src/main/java/javax/annotation/concurrent')
-rw-r--r--jsr305/ri/src/main/java/javax/annotation/concurrent/GuardedBy.java38
-rw-r--r--jsr305/ri/src/main/java/javax/annotation/concurrent/Immutable.java36
-rw-r--r--jsr305/ri/src/main/java/javax/annotation/concurrent/NotThreadSafe.java30
-rw-r--r--jsr305/ri/src/main/java/javax/annotation/concurrent/ThreadSafe.java22
4 files changed, 126 insertions, 0 deletions
diff --git a/jsr305/ri/src/main/java/javax/annotation/concurrent/GuardedBy.java b/jsr305/ri/src/main/java/javax/annotation/concurrent/GuardedBy.java
new file mode 100644
index 00000000..9d6641da
--- /dev/null
+++ b/jsr305/ri/src/main/java/javax/annotation/concurrent/GuardedBy.java
@@ -0,0 +1,38 @@
+package javax.annotation.concurrent;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/*
+ * Copyright (c) 2005 Brian Goetz
+ * Released under the Creative Commons Attribution License
+ * (http://creativecommons.org/licenses/by/2.5)
+ * Official home: http://www.jcip.net
+ */
+
+/**
+ * GuardedBy
+ *
+ * The field or method to which this annotation is applied can only be accessed
+ * when holding a particular lock, which may be a built-in (synchronization)
+ * lock, or may be an explicit java.util.concurrent.Lock.
+ *
+ * The argument determines which lock guards the annotated field or method: this :
+ * The string literal "this" means that this field is guarded by the class in
+ * which it is defined. class-name.this : For inner classes, it may be necessary
+ * to disambiguate 'this'; the class-name.this designation allows you to specify
+ * which 'this' reference is intended itself : For reference fields only; the
+ * object to which the field refers. field-name : The lock object is referenced
+ * by the (instance or static) field specified by field-name.
+ * class-name.field-name : The lock object is reference by the static field
+ * specified by class-name.field-name. method-name() : The lock object is
+ * returned by calling the named nil-ary method. class-name.class : The Class
+ * object for the specified class should be used as the lock object.
+ */
+@Target( { ElementType.FIELD, ElementType.METHOD })
+@Retention(RetentionPolicy.CLASS)
+public @interface GuardedBy {
+ String value();
+}
diff --git a/jsr305/ri/src/main/java/javax/annotation/concurrent/Immutable.java b/jsr305/ri/src/main/java/javax/annotation/concurrent/Immutable.java
new file mode 100644
index 00000000..03f1cb58
--- /dev/null
+++ b/jsr305/ri/src/main/java/javax/annotation/concurrent/Immutable.java
@@ -0,0 +1,36 @@
+package javax.annotation.concurrent;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/*
+ * Copyright (c) 2005 Brian Goetz
+ * Released under the Creative Commons Attribution License
+ * (http://creativecommons.org/licenses/by/2.5)
+ * Official home: http://www.jcip.net
+ */
+
+/**
+ * Immutable
+ *
+ * The class to which this annotation is applied is immutable. This means that
+ * its state cannot be seen to change by callers. Of necessity this means that
+ * all public fields are final, and that all public final reference fields refer
+ * to other immutable objects, and that methods do not publish references to any
+ * internal state which is mutable by implementation even if not by design.
+ * Immutable objects may still have internal mutable state for purposes of
+ * performance optimization; some state variables may be lazily computed, so
+ * long as they are computed from immutable state and that callers cannot tell
+ * the difference.
+ *
+ * Immutable objects are inherently thread-safe; they may be passed between
+ * threads or published without synchronization.
+ */
+@Documented
+@Target(ElementType.TYPE)
+@Retention(RetentionPolicy.CLASS)
+public @interface Immutable {
+}
diff --git a/jsr305/ri/src/main/java/javax/annotation/concurrent/NotThreadSafe.java b/jsr305/ri/src/main/java/javax/annotation/concurrent/NotThreadSafe.java
new file mode 100644
index 00000000..d9481426
--- /dev/null
+++ b/jsr305/ri/src/main/java/javax/annotation/concurrent/NotThreadSafe.java
@@ -0,0 +1,30 @@
+package javax.annotation.concurrent;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/*
+ * Copyright (c) 2005 Brian Goetz
+ * Released under the Creative Commons Attribution License
+ * (http://creativecommons.org/licenses/by/2.5)
+ * Official home: http://www.jcip.net
+ */
+
+/**
+ * NotThreadSafe
+ *
+ * The class to which this annotation is applied is not thread-safe. This
+ * annotation primarily exists for clarifying the non-thread-safety of a class
+ * that might otherwise be assumed to be thread-safe, despite the fact that it
+ * is a bad idea to assume a class is thread-safe without good reason.
+ *
+ * @see ThreadSafe
+ */
+@Documented
+@Target(ElementType.TYPE)
+@Retention(RetentionPolicy.CLASS)
+public @interface NotThreadSafe {
+}
diff --git a/jsr305/ri/src/main/java/javax/annotation/concurrent/ThreadSafe.java b/jsr305/ri/src/main/java/javax/annotation/concurrent/ThreadSafe.java
new file mode 100644
index 00000000..3c861289
--- /dev/null
+++ b/jsr305/ri/src/main/java/javax/annotation/concurrent/ThreadSafe.java
@@ -0,0 +1,22 @@
+package javax.annotation.concurrent;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * ThreadSafe
+ *
+ * The class to which this annotation is applied is thread-safe. This means that
+ * no sequences of accesses (reads and writes to public fields, calls to public
+ * methods) may put the object into an invalid state, regardless of the
+ * interleaving of those actions by the runtime, and without requiring any
+ * additional synchronization or coordination on the part of the caller.
+ */
+@Documented
+@Target(ElementType.TYPE)
+@Retention(RetentionPolicy.CLASS)
+public @interface ThreadSafe {
+}