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


Groups > comp.lang.java.gui > #4586

Re: Synchronization when collecting data from the EDT?

From Daniele Futtorovic <da.futt.news@laposte-dot-net.invalid>
Newsgroups comp.lang.java.gui
Subject Re: Synchronization when collecting data from the EDT?
Date 2011-06-08 00:10 +0200
Organization A noiseless patient Spider
Message-ID <ism7lg$ku1$1@dont-email.me> (permalink)
References (3 earlier) <nospam-0D155A.23474105062011@news.aioe.org> <TjZGp.40183$Vp.29218@newsfe14.iad> <nospam-7A4754.23033306062011@news.aioe.org> <islktt$kt1$1@dont-email.me> <nospam-1E20CE.13382907062011@news.aioe.org>

Show all headers | View raw


On 07/06/2011 19:38, John B. Matthews allegedly wrote:
> In article <islktt$kt1$1@dont-email.me>,
>  Daniele Futtorovic <da.futt.news@laposte-dot-net.invalid> wrote:
> 
>> On 07/06/2011 05:03, John B. Matthews allegedly wrote:
>>> Here's my (contrived) sscce. A javax.swing.Timer increments  an int 
>>> at 100 Hz, while a java.util.TimerTask samples the value at 1 Hz. 
>>> I'd like the API to be a little more explicit, but it does say that 
>>> the calling thread blocks and the Runnable's dispatch "will happen 
>>> after all pending events are processed."
>>>
> [code elided]
>>
>> John, is it intended that you didn't use a thread-safe producer/consumer
>> queue (a mere LinkedList)? I would have thought one would be necessary,
>> but since it touches upon the subject Knute brought to our attention,
>> I'm wondering whether there's some kind of point involved.
> 
> I appreciate your insight on this. I'm afraid my example just 
> recapitulates Knute's question without answering it: Does the 
> invokeAndWait() API ensure correct synchronization when used as shown? 
> I'm confident that the _implementation_ I examined is correct, as the 
> relevant methods are synchronized. Sadly, I have a tendency to over-
> read the API.

Aha! So it was the point! :)

Question then, for I am not an expert when it comes to the memory model:
You say the implementation you examined guarantees the code's
correctness. This seems to me to imply that the non-EDT thread, upon
calling invokeAndWait(), because it locks and waits on some monitor, is
guaranteed to fetch a fresh copy of the LinkedList instance before it
proceeds to dereference it. Is that actually so? Makes sense I guess,
but I had never thought of it like that.
To be more precise, I believe my question boils down to this: when a
thread's memory is flushed, is that always a full flush, or can it be a
selective flush, and if so, how does the selection happen?


> I can't find a Sun/Oracle example using invokeAndWait() dated later than 
> 2000, well after the advent of java.util.concurrent. Would it be correct 
> to infer that using, say BlockingQueue, would obviate the need for 
> invokeAndWait()?


You mean "well before", don't you?

A BlockingQueue would only be a good solution if the non-EDT thread is
waiting for a value, rather than for a process to finish. But it would
seem to me that Exchanger + CountdownLatch(1) would indeed make the
"AndWait()" part obsolete. Or at least provide a complete alternative.

-- 
DF.
Determinism trumps correctness.

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


Thread

Synchronization when collecting data from the EDT? Knute Johnson <nospam@knutejohnson.com> - 2011-06-04 17:38 -0700
  Re: Synchronization when collecting data from the EDT? Knute Johnson <nospam@knutejohnson.com> - 2011-06-04 17:50 -0700
  Re: Synchronization when collecting data from the EDT? Daniele Futtorovic <da.futt.news@laposte-dot-net.invalid> - 2011-06-05 17:52 +0200
    Re: Synchronization when collecting data from the EDT? Knute Johnson <nospam@knutejohnson.com> - 2011-06-05 10:47 -0700
      Re: Synchronization when collecting data from the EDT? "John B. Matthews" <nospam@nospam.invalid> - 2011-06-05 23:47 -0400
        Re: Synchronization when collecting data from the EDT? Knute Johnson <nospam@knutejohnson.com> - 2011-06-05 22:11 -0700
          Re: Synchronization when collecting data from the EDT? Daniele Futtorovic <da.futt.news@laposte-dot-net.invalid> - 2011-06-06 14:31 +0200
          Re: Synchronization when collecting data from the EDT? "John B. Matthews" <nospam@nospam.invalid> - 2011-06-06 23:03 -0400
            Re: Synchronization when collecting data from the EDT? Daniele Futtorovic <da.futt.news@laposte-dot-net.invalid> - 2011-06-07 18:51 +0200
              Re: Synchronization when collecting data from the EDT? "John B. Matthews" <nospam@nospam.invalid> - 2011-06-07 13:38 -0400
                Re: Synchronization when collecting data from the EDT? Daniele Futtorovic <da.futt.news@laposte-dot-net.invalid> - 2011-06-08 00:10 +0200
                Re: Synchronization when collecting data from the EDT? "John B. Matthews" <nospam@nospam.invalid> - 2011-06-07 23:51 -0400
                Re: Synchronization when collecting data from the EDT? Daniele Futtorovic <da.futt.news@laposte-dot-net.invalid> - 2011-06-10 01:17 +0200
                Re: Synchronization when collecting data from the EDT? Daniele Futtorovic <da.futt.news@laposte-dot-net.invalid> - 2011-06-10 01:25 +0200
                Re: Synchronization when collecting data from the EDT? "John B. Matthews" <nospam@nospam.invalid> - 2011-06-09 22:34 -0400
                Re: Synchronization when collecting data from the EDT? Daniele Futtorovic <da.futt.news@laposte-dot-net.invalid> - 2011-06-10 05:22 +0200
                Re: Synchronization when collecting data from the EDT? markspace <-@.> - 2011-06-10 08:04 -0700
                Re: Synchronization when collecting data from the EDT? "John B. Matthews" <nospam@nospam.invalid> - 2011-06-10 21:13 -0400
                Re: Synchronization when collecting data from the EDT? Knute Johnson <nospam@knutejohnson.com> - 2011-06-12 12:51 -0700
                Re: Synchronization when collecting data from the EDT? markspace <-@.> - 2011-06-07 23:31 -0700
                Re: Synchronization when collecting data from the EDT? Knute Johnson <nospam@knutejohnson.com> - 2011-06-08 23:07 -0700
                Re: Synchronization when collecting data from the EDT? "John B. Matthews" <nospam@nospam.invalid> - 2011-06-09 18:35 -0400
                Re: Synchronization when collecting data from the EDT? Knute Johnson <nospam@knutejohnson.com> - 2011-06-12 12:45 -0700
            Re: Synchronization when collecting data from the EDT? Knute Johnson <nospam@knutejohnson.com> - 2011-06-08 23:05 -0700
              Re: Synchronization when collecting data from the EDT? "John B. Matthews" <nospam@nospam.invalid> - 2011-06-09 14:35 -0400
  Re: Synchronization when collecting data from the EDT? Roedy Green <see_website@mindprod.com.invalid> - 2011-06-05 13:39 -0700
    Re: Synchronization when collecting data from the EDT? Knute Johnson <nospam@knutejohnson.com> - 2011-06-05 22:17 -0700
      Re: Synchronization when collecting data from the EDT? markspace <-@.> - 2011-06-07 14:51 -0700
  Re: Synchronization when collecting data from the EDT? markspace <-@.> - 2011-06-05 17:46 -0700
    Re: Synchronization when collecting data from the EDT? Knute Johnson <nospam@knutejohnson.com> - 2011-06-05 22:41 -0700
      Re: Synchronization when collecting data from the EDT? Daniele Futtorovic <da.futt.news@laposte-dot-net.invalid> - 2011-06-06 14:35 +0200

csiph-web