[ 
https://issues.apache.org/jira/browse/ZOOKEEPER-955?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12969399#action_12969399
 ] 

Benjamin Reed commented on ZOOKEEPER-955:
-----------------------------------------

following up on henry's comment, it appears that we are indeed calling some of 
these from synchronized blocks, but they are really only synchronized for the 
call itself. we should remove those as well since it would be confusing to mix 
synchronization and AtomicX. it would also allow us to make sure there isn't a 
side effect of the synchronization that we are missing.

> Use Atomic(Integer|Long) for (Z)Xid
> -----------------------------------
>
>                 Key: ZOOKEEPER-955
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-955
>             Project: ZooKeeper
>          Issue Type: Improvement
>          Components: java client, server
>            Reporter: Thomas Koch
>            Assignee: Thomas Koch
>            Priority: Trivial
>         Attachments: ZOOKEEPER-955.patch
>
>
> As I've read last weekend in the fantastic book "Clean Code", it'd be much 
> faster to use AtomicInteger or AtomicLong instead of synchronization blocks 
> around each access to an int or long.
> The key difference is, that a synchronization block will in any case acquire 
> and release a lock. The atomic classes use "optimistic locking", a CPU 
> operation that only changes a value if it still has not changed since the 
> last read.
> In most cases the value has not changed since the last visit so the operation 
> is just as fast as a normal operation. If it had changed, then we read again 
> and try to change again.
> [1] Clean Code: A Handbook of Agile Software Craftsmanship (Robert C. Martin) 

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

Reply via email to