Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #9806

Re: Can you use "synchronized" for data members

Path csiph.com!x330-a1.tempe.blueboxinc.net!newsfeed.hal-mli.net!feeder3.hal-mli.net!newsfeed.hal-mli.net!feeder1.hal-mli.net!border3.nntp.dca.giganews.com!Xl.tags.giganews.com!border1.nntp.dca.giganews.com!nntp.giganews.com!local2.nntp.dca.giganews.com!nntp.earthlink.com!news.earthlink.com.POSTED!not-for-mail
NNTP-Posting-Date Wed, 09 Nov 2011 16:07:29 -0600
Date Wed, 09 Nov 2011 14:07:25 -0800
From Patricia Shanahan <pats@acm.org>
User-Agent Mozilla/5.0 (Windows NT 5.2; WOW64; rv:8.0) Gecko/20111105 Thunderbird/8.0
MIME-Version 1.0
Newsgroups comp.lang.java.programmer
Subject Re: Can you use "synchronized" for data members
References <9b72bb98-97ce-46da-8f08-a9ed74440638@d37g2000prg.googlegroups.com> <j9ehel$41c$1@dont-email.me> <alpine.DEB.2.00.1111092144080.12684@urchin.earth.li>
In-Reply-To <alpine.DEB.2.00.1111092144080.12684@urchin.earth.li>
Content-Type text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding 7bit
Message-ID <89GdnQsAToc8ZCfTnZ2dnUVZ_sSdnZ2d@earthlink.com> (permalink)
Lines 66
X-Usenet-Provider http://www.giganews.com
NNTP-Posting-Host 75.8.127.7
X-Trace sv3-EBUNrpWRw8bvKaaj1xehYGIy5IffqhPw0x0Uz0XQB7GclqaCl7Dzrd3n8aIh41WrA+5Yte4vTLyKT3C!PEynvytOp4Qr9Geix6WK7HVSHkueoWmyBte4zx9gaLDgon+TTg670wwyFy/YQcC1BNlpyVZNfwy1!63cgiM2xrmBaWzH82CjzZydV/jrqOR+FrbBhM+ExVg==
X-Abuse-and-DMCA-Info Please be sure to forward a copy of ALL headers
X-Abuse-and-DMCA-Info Otherwise we will be unable to process your complaint properly
X-Postfilter 1.3.40
X-Original-Bytes 3287
Xref x330-a1.tempe.blueboxinc.net comp.lang.java.programmer:9806

Show key headers only | View raw


On 11/9/2011 2:02 PM, Tom Anderson wrote:
> On Wed, 9 Nov 2011, markspace wrote:
>
>> On 11/9/2011 10:32 AM, Nagrik wrote:
>>
>>> Can the "synchronized" kew word be used in front of data members.
>>
>> No. Use "volatile" for that.
>
> Yes. Although it isn't *quite* the same thing.
>
> By which i mean that:
>
> class Smeagol {
> private volatile int x;
> public int getX() {
> return x;
> }
> public void setX(int x) {
> this.x = x;
> }
> }
>
> And:
>
> class Deagol {
> private int x;
> public synchronized int getX() {
> return x;
> }
> public synchronized void setX(int x) {
> this.x = x;
> }
> }
>
> Have slightly different semantics. If thread A calls getX, and then
> thread B calls setX, then with Deagol, there is a happens-before
> relationship between the two calls. With Smeagol, there is not. Whereas
> if A calls setX and then B calls getX, both Smeagol and Deagol will
> generate a happens-before relationship.
>
> Or so i believe. I hope someone will correct me if i'm wrong.
>
> The good news is that in most cases, the weaker guarantees provided by
> Smeagol's volatile are actually just what you want (because you don't
> care that a write to a variable happens after a read), and the JVM can
> generate a more streamlined sequence of instructions for it.

Very often, for int, you need a much stronger guarantee. Consider
"x++;". It involves two memory accesses, one to read the old value of x
and the other to write the new value. If two or more threads are doing
similar operations at the same time, something has to be done to prevent
the following sort of thing:

x is initially 0
Thread A reads x, getting 0.
Thread B reads x, getting 0.
Thread A writes 1 to x.
Thread B writes 1 to x.

Two threads have each executed x++, but x has only increased in value by 1.

In many cases, AtomicInteger is a better choice than int for a variable
that needs to be operated on by multiple threads.

Patricia

Back to comp.lang.java.programmer | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

Can you use "synchronized" for data members Nagrik <vnagrik@gmail.com> - 2011-11-09 10:32 -0800
  Re: Can you use "synchronized" for data members markspace <-@.> - 2011-11-09 10:40 -0800
    Re: Can you use "synchronized" for data members Tom Anderson <twic@urchin.earth.li> - 2011-11-09 22:02 +0000
      Re: Can you use "synchronized" for data members Patricia Shanahan <pats@acm.org> - 2011-11-09 14:07 -0800
    Re: Can you use "synchronized" for data members Joshua Maurice <joshuamaurice@gmail.com> - 2011-11-09 17:09 -0800

csiph-web