Review Request: CR 7100996 - (spec str) IndexOutOfBoundsException when using a StringBuffer from multiple threads (original) (raw)
Jim Gish jim.gish at oracle.com
Thu Jun 21 18:10:42 UTC 2012
- Previous message: Review Request: CR 7100996 - (spec str) IndexOutOfBoundsException when using a StringBuffer from multiple threads
- Next message: Review Request: CR 7100996 - (spec str) IndexOutOfBoundsException when using a StringBuffer from multiple threads
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Taking all the previous comments into consideration, here's an update:
diff -r fc575c78f5d3 src/share/classes/java/lang/StringBuffer.java --- a/src/share/classes/java/lang/StringBuffer.java Sun Jun 10 10:29:27 2012 +0100 +++ b/src/share/classes/java/lang/StringBuffer.java Thu Jun 21 14:09:17 2012 -0400 @@ -63,6 +63,16 @@
- appending or inserting from a source sequence) this class synchronizes
- only on the string buffer performing the operation, not on the source.
- While
StringBuffer
is designed to be safe to use
- While
- concurrently from multiple threads, the source data passed to create,
- i.e.
StringBuffer(source)
,append(source)
,
- i.e.
- or
insert(source)
, if shared across threads, must ensure
- or
- that
create/append/insert
has a consistent and unchanging
- that
- view of the source data for the duration of the operation. This could
- be done by the caller holding a lock during the
create/append/insert
call, or because the source data is
- immutable, or because the source data is not shared across threads.
- 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
Thanks, Jim
On 06/21/2012 12:49 PM, David Schlosnagle wrote:
On Thu, Jun 21, 2012 at 11:59 AM, Jim Gish<jim.gish at oracle.com> wrote:
+ * across threads, must ensure that StringBuffer.add/insert has a Jim, You may want to replace "add" with "append" if you are intending to reference the actual method name and not the generic operation. Additionally, you may want to use {@code ...} to show this context. Thanks, Dave
-- 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
- Previous message: Review Request: CR 7100996 - (spec str) IndexOutOfBoundsException when using a StringBuffer from multiple threads
- Next message: Review Request: CR 7100996 - (spec str) IndexOutOfBoundsException when using a StringBuffer from multiple threads
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]