[concurrency-interest] Cloning in CachingFactorizer in JavaConcurrency in Practice

Unmesh joshi unmesh_joshi at hotmail.com
Wed Jan 23 00:09:51 EST 2008

But isn't that receiver of the array is another thread? So if encodeIntoResponse can mess up array, there can be concurency issues?
From: dcholmes at optusnet.com.au
To: unmesh_joshi at hotmail.com; concurrency-interest at cs.oswego.edu
Subject: RE: [concurrency-interest] Cloning in CachingFactorizer in JavaConcurrency in Practice
Date: Wed, 23 Jan 2008 14:40:41 +1000

cloning isn't for concurrency reasons but just the usual defensive copying 
so that the receiver of the array can't mess with the original 
Effective Java item 24.

  -----Original Message-----
  concurrency-interest-bounces at cs.oswego.edu 
  [mailto:concurrency-interest-bounces at cs.oswego.edu]On Behalf Of Unmesh 
Sent: Wednesday, 23 January 2008 2:09 PM
  concurrency-interest at cs.oswego.edu
Subject: [concurrency-interest] 
  Cloning in CachingFactorizer in JavaConcurrency in 

I just started reading Java 
  Concurrency in practice. In the following CachingFactorizer 

  BigInteger i = extractFromRequest(req);
  BigInteger[] factors = null;
  synchronized (this) {
  if (i.equals(lastNumber)) {
  factors = lastFactors.clone();
  if (factors == null) {
  factors = factor(i);
  synchronized (this) {
  lastNumber = i;
  lastFactors = factors.clone();
  encodeIntoResponse(resp, factors);
  factors and lastFactors are cloned in the synchronized blocks, 
  but there is no explanation at that point why they are cloned. In the Object 
  Sharing section, stack confinement is discussed, but using a different 
  example. I think it will help reader if a note is added at that point saying 
  that cloning here is for stack confinement, because assignments to factors or 
  lastfactors is indirectly publishing the array to other thread which can be 
  processing the array in encodeIntoResponse method.

  Live the life in style with MSN Lifestyle. Check out! Try it now! 

Post ads for free - to sell, rent or even buy.www.yello.in
-------------- next part --------------
An HTML attachment was scrubbed...
URL: /pipermail/attachments/20080123/ea0236fe/attachment.html 

More information about the Concurrency-interest mailing list