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


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

Re: A question about synchronized threads

From dagon@dagon.net (Dagon)
Newsgroups comp.lang.java.programmer
Subject Re: A question about synchronized threads
Date 2011-04-29 15:55 -0700
Organization Dagon.net
Message-ID <68sr88-fuj.ln1@dagon.net> (permalink)
References <3f249d87-aaf8-4732-9ee8-fd112cf82553@f31g2000pri.googlegroups.com>

Show all headers | View raw


byhesed  <byhesed@gmail.com> wrote:
>public class A {
>    synchronized void m1() { ... }
>    synchronized void m2() { ... }
>    void m3() { ... }
>}
>The book explains above code:
>    Given an instance a of class A, when one thread is executing
>a.m1(), another thread will be prohibited from executing a.m1() or a.m2().

Throw this book away and get a better one (Goetz, "Java Concurrency in
Practict" is good).

>I have a question.
>The explanation means than when one thread is executing m1() method,
>No other threads can execute m1() or m2() thread.
>Is it correct?

This is kind of correct for this example, but it's stated in such a way that
it will confuse you until you learn more completely what synchronized does.

What it really does is: "before any thread enters m1 or m2, it will acquire an
exclusive lock on the instance of A.  No other thread may acquire that lock
for that instance of A until the lock-holding thread releases it by exiting
the method."

>If it is correct, how can I handle it better?
>I think it is too ineffectual. Does anybody know?

Depends on what you want to happen - why do you think it's ineffectual?  It's
pretty effective if you want to make sure that only one thread at a time
can run those methods on the same instance.
--
Mark Rafn    dagon@dagon.net    <http://www.dagon.net/>  

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


Thread

A question about synchronized threads byhesed <byhesed@gmail.com> - 2011-04-29 08:35 -0700
  Re: A question about synchronized threads Lew <noone@lewscanon.com> - 2011-04-29 11:53 -0400
    Re: A question about synchronized threads byhesed <byhesed@gmail.com> - 2011-04-29 09:12 -0700
      Re: A question about synchronized threads Eric Sosman <esosman@ieee-dot-org.invalid> - 2011-04-29 21:01 -0400
        Re: A question about synchronized threads byhesed <byhesed@gmail.com> - 2011-04-29 18:43 -0700
  Re: A question about synchronized threads Daniele Futtorovic <da.futt.news@laposte-dot-net.invalid> - 2011-04-29 17:58 +0200
    Re: A question about synchronized threads byhesed <byhesed@gmail.com> - 2011-04-29 09:09 -0700
      Re: A question about synchronized threads markspace <-@.> - 2011-04-29 11:11 -0700
        Re: A question about synchronized threads Daniele Futtorovic <da.futt.news@laposte-dot-net.invalid> - 2011-04-29 20:19 +0200
          Re: A question about synchronized threads markspace <-@.> - 2011-04-29 15:21 -0700
          Re: A question about synchronized threads Patricia Shanahan <pats@acm.org> - 2011-04-29 21:10 -0700
  Re: A question about synchronized threads dagon@dagon.net (Dagon) - 2011-04-29 15:55 -0700
    Re: A question about synchronized threads Alice <quaxx1108@example.com> - 2011-04-29 20:08 -0400
    Re: A question about synchronized threads markspace <-@.> - 2011-04-29 19:07 -0700
    Re: A question about synchronized threads byhesed <byhesed@gmail.com> - 2011-04-29 18:49 -0700
      Re: A question about synchronized threads Lew <noone@lewscanon.com> - 2011-05-03 18:57 -0400
        Re: A question about synchronized threads Deeyana <d.awlberg@hotmail.invalid> - 2011-05-04 00:17 +0000
          Re: A question about synchronized threads Lew <noone@lewscanon.com> - 2011-05-04 12:45 -0400
            Re: A question about synchronized threads Deeyana <d.awlberg@hotmail.invalid> - 2011-05-04 19:59 +0000

csiph-web