[jira] Created: (LANG-329) Pointless synchronized in ThreadLocal.initialValue should be removed

classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

[jira] Created: (LANG-329) Pointless synchronized in ThreadLocal.initialValue should be removed

ASF GitHub Bot (Jira)
Pointless synchronized in ThreadLocal.initialValue should be removed
--------------------------------------------------------------------

                 Key: LANG-329
                 URL: https://issues.apache.org/jira/browse/LANG-329
             Project: Commons Lang
          Issue Type: Improvement
    Affects Versions: 2.3
         Environment: Any
            Reporter: Hanson Char
            Priority: Trivial


--- jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/builder/ToStringStyle.java 2007/01/27 07:13:59 500497
+++ jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/builder/ToStringStyle.java 2007/04/20 05:06:03 530645
@@ -103,7 +103,7 @@
      * </p>
      */
     private static ThreadLocal registry = new ThreadLocal() {
-        protected synchronized Object initialValue() {
+        protected Object initialValue() {
             // The HashSet implementation is not synchronized,
             // which is just what we need here.
             return new HashSet();

--- jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/builder/HashCodeBuilder.java 2006/09/19 21:58:11 447989
+++ jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/builder/HashCodeBuilder.java 2007/04/20 05:11:46 530648
@@ -103,7 +103,7 @@
      * @since 2.3
      */
     private static ThreadLocal registry = new ThreadLocal() {
-        protected synchronized Object initialValue() {
+        protected Object initialValue() {
             // The HashSet implementation is not synchronized,
             // which is just what we need here.
             return new HashSet();



--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

[jira] Resolved: (LANG-329) Pointless synchronized in ThreadLocal.initialValue should be removed

ASF GitHub Bot (Jira)

     [ https://issues.apache.org/jira/browse/LANG-329?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Hanson Char resolved LANG-329.
------------------------------

    Resolution: Fixed

I've fixed it in the SVN main trunk.  Let me know if any problem.  Thanks.

> Pointless synchronized in ThreadLocal.initialValue should be removed
> --------------------------------------------------------------------
>
>                 Key: LANG-329
>                 URL: https://issues.apache.org/jira/browse/LANG-329
>             Project: Commons Lang
>          Issue Type: Improvement
>    Affects Versions: 2.3
>         Environment: Any
>            Reporter: Hanson Char
>            Priority: Trivial
>
> --- jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/builder/ToStringStyle.java 2007/01/27 07:13:59 500497
> +++ jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/builder/ToStringStyle.java 2007/04/20 05:06:03 530645
> @@ -103,7 +103,7 @@
>       * </p>
>       */
>      private static ThreadLocal registry = new ThreadLocal() {
> -        protected synchronized Object initialValue() {
> +        protected Object initialValue() {
>              // The HashSet implementation is not synchronized,
>              // which is just what we need here.
>              return new HashSet();
> --- jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/builder/HashCodeBuilder.java 2006/09/19 21:58:11 447989
> +++ jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/builder/HashCodeBuilder.java 2007/04/20 05:11:46 530648
> @@ -103,7 +103,7 @@
>       * @since 2.3
>       */
>      private static ThreadLocal registry = new ThreadLocal() {
> -        protected synchronized Object initialValue() {
> +        protected Object initialValue() {
>              // The HashSet implementation is not synchronized,
>              // which is just what we need here.
>              return new HashSet();

--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

[jira] Updated: (LANG-329) Pointless synchronized in ThreadLocal.initialValue should be removed

ASF GitHub Bot (Jira)
In reply to this post by ASF GitHub Bot (Jira)

     [ https://issues.apache.org/jira/browse/LANG-329?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Henri Yandell updated LANG-329:
-------------------------------

    Fix Version/s: 3.0

No major problems. Minor ones:

* Set a fix version in JIRA to the next planned version. I'm doing that now (3.0).
* Common to introduce yourself if people aren't expecting you to be committing to a component.
* Also somewhat common I think to lag things between the report and the commit to allow for comments, though no biggy.

This looks like a fine fix to me.

> Pointless synchronized in ThreadLocal.initialValue should be removed
> --------------------------------------------------------------------
>
>                 Key: LANG-329
>                 URL: https://issues.apache.org/jira/browse/LANG-329
>             Project: Commons Lang
>          Issue Type: Improvement
>    Affects Versions: 2.3
>         Environment: Any
>            Reporter: Hanson Char
>            Priority: Trivial
>             Fix For: 3.0
>
>
> --- jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/builder/ToStringStyle.java 2007/01/27 07:13:59 500497
> +++ jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/builder/ToStringStyle.java 2007/04/20 05:06:03 530645
> @@ -103,7 +103,7 @@
>       * </p>
>       */
>      private static ThreadLocal registry = new ThreadLocal() {
> -        protected synchronized Object initialValue() {
> +        protected Object initialValue() {
>              // The HashSet implementation is not synchronized,
>              // which is just what we need here.
>              return new HashSet();
> --- jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/builder/HashCodeBuilder.java 2006/09/19 21:58:11 447989
> +++ jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/builder/HashCodeBuilder.java 2007/04/20 05:11:46 530648
> @@ -103,7 +103,7 @@
>       * @since 2.3
>       */
>      private static ThreadLocal registry = new ThreadLocal() {
> -        protected synchronized Object initialValue() {
> +        protected Object initialValue() {
>              // The HashSet implementation is not synchronized,
>              // which is just what we need here.
>              return new HashSet();

--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

[jira] Commented: (LANG-329) Pointless synchronized in ThreadLocal.initialValue should be removed

ASF GitHub Bot (Jira)
In reply to this post by ASF GitHub Bot (Jira)

    [ https://issues.apache.org/jira/browse/LANG-329?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12490371 ]

Hanson Char commented on LANG-329:
----------------------------------

Will do the right thing next time.  Thanks for the advise.  


> Pointless synchronized in ThreadLocal.initialValue should be removed
> --------------------------------------------------------------------
>
>                 Key: LANG-329
>                 URL: https://issues.apache.org/jira/browse/LANG-329
>             Project: Commons Lang
>          Issue Type: Improvement
>    Affects Versions: 2.3
>         Environment: Any
>            Reporter: Hanson Char
>            Priority: Trivial
>             Fix For: 3.0
>
>
> --- jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/builder/ToStringStyle.java 2007/01/27 07:13:59 500497
> +++ jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/builder/ToStringStyle.java 2007/04/20 05:06:03 530645
> @@ -103,7 +103,7 @@
>       * </p>
>       */
>      private static ThreadLocal registry = new ThreadLocal() {
> -        protected synchronized Object initialValue() {
> +        protected Object initialValue() {
>              // The HashSet implementation is not synchronized,
>              // which is just what we need here.
>              return new HashSet();
> --- jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/builder/HashCodeBuilder.java 2006/09/19 21:58:11 447989
> +++ jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/builder/HashCodeBuilder.java 2007/04/20 05:11:46 530648
> @@ -103,7 +103,7 @@
>       * @since 2.3
>       */
>      private static ThreadLocal registry = new ThreadLocal() {
> -        protected synchronized Object initialValue() {
> +        protected Object initialValue() {
>              // The HashSet implementation is not synchronized,
>              // which is just what we need here.
>              return new HashSet();

--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

[jira] Commented: (LANG-329) Pointless synchronized in ThreadLocal.initialValue should be removed

ASF GitHub Bot (Jira)
In reply to this post by ASF GitHub Bot (Jira)

    [ https://issues.apache.org/jira/browse/LANG-329?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12490375 ]

Gary Gregory commented on LANG-329:
-----------------------------------

Before we sign off on this I'd like to know why it is "pointless" and why does Sun recommend doing it the way the code was before this patch in their documentation.

Please see:
http://java.sun.com/j2se/1.4.2/docs/api/java/lang/ThreadLocal.html
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/ThreadLocal.html

If you are on 1.6+, you'd do it differently:
http://java.sun.com/javase/6/docs/api/java/lang/ThreadLocal.html


> Pointless synchronized in ThreadLocal.initialValue should be removed
> --------------------------------------------------------------------
>
>                 Key: LANG-329
>                 URL: https://issues.apache.org/jira/browse/LANG-329
>             Project: Commons Lang
>          Issue Type: Improvement
>    Affects Versions: 2.3
>         Environment: Any
>            Reporter: Hanson Char
>            Priority: Trivial
>             Fix For: 3.0
>
>
> --- jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/builder/ToStringStyle.java 2007/01/27 07:13:59 500497
> +++ jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/builder/ToStringStyle.java 2007/04/20 05:06:03 530645
> @@ -103,7 +103,7 @@
>       * </p>
>       */
>      private static ThreadLocal registry = new ThreadLocal() {
> -        protected synchronized Object initialValue() {
> +        protected Object initialValue() {
>              // The HashSet implementation is not synchronized,
>              // which is just what we need here.
>              return new HashSet();
> --- jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/builder/HashCodeBuilder.java 2006/09/19 21:58:11 447989
> +++ jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/builder/HashCodeBuilder.java 2007/04/20 05:11:46 530648
> @@ -103,7 +103,7 @@
>       * @since 2.3
>       */
>      private static ThreadLocal registry = new ThreadLocal() {
> -        protected synchronized Object initialValue() {
> +        protected Object initialValue() {
>              // The HashSet implementation is not synchronized,
>              // which is just what we need here.
>              return new HashSet();

--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

[jira] Commented: (LANG-329) Pointless synchronized in ThreadLocal.initialValue should be removed

ASF GitHub Bot (Jira)
In reply to this post by ASF GitHub Bot (Jira)

    [ https://issues.apache.org/jira/browse/LANG-329?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12490380 ]

Hanson Char commented on LANG-329:
----------------------------------

The reason is in this case the returned instance is a new instance every time.  There is shared state.  Synchronization is required only if a shared object is accessed, like the examples of read-modify-write integer increment they gave in the javadoc.

Also, I've verified if this case is pointless or not in the jsr166 concurrency forum.  See http://www.nabble.com/forum/ViewPost.jtp?post=10089323&framed=y

> Pointless synchronized in ThreadLocal.initialValue should be removed
> --------------------------------------------------------------------
>
>                 Key: LANG-329
>                 URL: https://issues.apache.org/jira/browse/LANG-329
>             Project: Commons Lang
>          Issue Type: Improvement
>    Affects Versions: 2.3
>         Environment: Any
>            Reporter: Hanson Char
>            Priority: Trivial
>             Fix For: 3.0
>
>
> --- jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/builder/ToStringStyle.java 2007/01/27 07:13:59 500497
> +++ jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/builder/ToStringStyle.java 2007/04/20 05:06:03 530645
> @@ -103,7 +103,7 @@
>       * </p>
>       */
>      private static ThreadLocal registry = new ThreadLocal() {
> -        protected synchronized Object initialValue() {
> +        protected Object initialValue() {
>              // The HashSet implementation is not synchronized,
>              // which is just what we need here.
>              return new HashSet();
> --- jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/builder/HashCodeBuilder.java 2006/09/19 21:58:11 447989
> +++ jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/builder/HashCodeBuilder.java 2007/04/20 05:11:46 530648
> @@ -103,7 +103,7 @@
>       * @since 2.3
>       */
>      private static ThreadLocal registry = new ThreadLocal() {
> -        protected synchronized Object initialValue() {
> +        protected Object initialValue() {
>              // The HashSet implementation is not synchronized,
>              // which is just what we need here.
>              return new HashSet();

--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

[jira] Commented: (LANG-329) Pointless synchronized in ThreadLocal.initialValue should be removed

ASF GitHub Bot (Jira)
In reply to this post by ASF GitHub Bot (Jira)

    [ https://issues.apache.org/jira/browse/LANG-329?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12490381 ]

Hanson Char commented on LANG-329:
----------------------------------

%s/There is shared state/There is no shared state/g

> Pointless synchronized in ThreadLocal.initialValue should be removed
> --------------------------------------------------------------------
>
>                 Key: LANG-329
>                 URL: https://issues.apache.org/jira/browse/LANG-329
>             Project: Commons Lang
>          Issue Type: Improvement
>    Affects Versions: 2.3
>         Environment: Any
>            Reporter: Hanson Char
>            Priority: Trivial
>             Fix For: 3.0
>
>
> --- jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/builder/ToStringStyle.java 2007/01/27 07:13:59 500497
> +++ jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/builder/ToStringStyle.java 2007/04/20 05:06:03 530645
> @@ -103,7 +103,7 @@
>       * </p>
>       */
>      private static ThreadLocal registry = new ThreadLocal() {
> -        protected synchronized Object initialValue() {
> +        protected Object initialValue() {
>              // The HashSet implementation is not synchronized,
>              // which is just what we need here.
>              return new HashSet();
> --- jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/builder/HashCodeBuilder.java 2006/09/19 21:58:11 447989
> +++ jakarta/commons/proper/lang/trunk/src/java/org/apache/commons/lang/builder/HashCodeBuilder.java 2007/04/20 05:11:46 530648
> @@ -103,7 +103,7 @@
>       * @since 2.3
>       */
>      private static ThreadLocal registry = new ThreadLocal() {
> -        protected synchronized Object initialValue() {
> +        protected Object initialValue() {
>              // The HashSet implementation is not synchronized,
>              // which is just what we need here.
>              return new HashSet();

--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]