Review Request: CR 7100996 - (spec str) IndexOutOfBoundsException when using a StringBuffer from multiple threads
Jim Gish
jim.gish at oracle.com
Thu Jun 21 15:59:47 UTC 2012
Please review the proposed spec change to StringBuffer below, which
informs the user about additional thread safety issues as described in
the bug. (Thanks to Brian for the language).
Thanks,
Jim
diff -r 46ff1b63b0c3 src/share/classes/java/lang/StringBuffer.java
--- a/src/share/classes/java/lang/StringBuffer.java Mon Jun 11
07:10:48 2012 -0400
+++ b/src/share/classes/java/lang/StringBuffer.java Thu Jun 21
11:45:51 2012 -0400
@@ -63,6 +63,14 @@
* appending or inserting from a source sequence) this class synchronizes
* only on the string buffer performing the operation, not on the source.
* <p>
+ * While StringBuffer is designed to be safe to use concurrently from
+ * multiple threads, the source data passed to append/insert, if shared
+ * across threads, must ensure that StringBuffer.add/insert has a
+ * consistent and unchanging view of the source data for the duration of
+ * the operation. This could be done by the caller holding a lock during
+ * the add/insert call, or because the source data is immutable, or
because
+ * the source data is not shared across threads.
+ * <p>
* Every string buffer has a capacity. As long as the length of the
* character sequence contained in the string buffer does not exceed
* the capacity, it is not necessary to allocate a new internal
--
Jim Gish | Consulting Member of Technical Staff | +1.781.442.0304
Oracle Java Platform Group | Core Libraries Team
35 Network Drive
Burlington, MA 01803
jim.gish at oracle.com
More information about the core-libs-dev
mailing list