Sascha,

  I tried one second, and it feels slow.  When I am arrowing through a
selection of records in View/Edit Attributes it makes me wait for the
flash before I move on.  Really, this is becoming  an issue of
compromising the interactivity of the application to achieve some
theoretical benefit that can't be seen or measured.

How about 400 ms?  That is about the average reaction time.

regards,
Larry Becker


On 6/15/07, Sascha L. Teichmann <[EMAIL PROTECTED]> wrote:
> Take zoom/panning as an example:
> When I zoom to a certain level I often do some zooming
> or panning within a few seconds again because the
> viewport is not adjust the way I really want it to be.
>
> I agree with you in principle and therefore the 'pooling' of
> threads in the new ThreadQueue is only light version:
> just keeping a running thread a little alive.
> For say one second instead of five?!
>
> - Sascha
>
>
> Larry Becker schrieb:
> > Thread pooling may be important for servers, but it doesn't seem to be
> > a performance factor in JUMP.  If no new jobs are being added in 50
> > ms, the cpu is probably idle anyway.
> >
> > regards,
> > Larry
> >
> > On 6/15/07, Sascha L. Teichmann <[EMAIL PROTECTED]> wrote:
> >> Not if you want to do thread pooling.
> >>
> >> The real problem: How can I get a notification
> >> when a zoom is done?
> >>
> >> The ZoomToSelectedItemsPlugIn ThreadQueue code looks
> >> like a workaround due to lack of a real possibility
> >> to get informed when the zoom is done.
> >>
> >> I will have a look at this problem.
> >>
> >> regards,
> >> Sascha
> >>
> >>
> >> Larry Becker schrieb:
> >>> I cut the WORKER_STAY_ALIVE_TIME to 50 ms and the flash now works.  50
> >>> ms is an eternity in CPU time anyway.
> >>>
> >>> regards,
> >>> Larry
> >>>
> >>> On 6/15/07, Larry Becker <[EMAIL PROTECTED]> wrote:
> >>>> Thanks for finding that Listener use in ZoomToSelectedItemsPlugIn.  I
> >>>> tried it and it doesn't flash anymore.
> >>>>
> >>>> regards,
> >>>> Larry
> >>>>
> >>>> On 6/15/07, Sascha L. Teichmann <[EMAIL PROTECTED]> wrote:
> >>>>> In core the
> >>>>>
> >>>>> com.vividsolutions.jump.workbench.ui.zoom.ZoomToSelectedItemsPlugIn
> >>>>>
> >>>>> uses the ThreadQueue.Listener interface. But the code looks like it can
> >>>>> cope with the 'slightly' shifted semantic.
> >>>>>
> >>>>> I would vote for stick a @deprecated tag (+ some explanations)
> >>>>> to the respective methods and to the interface because code
> >>>>> that uses these mechanisms is possibly not aware of the
> >>>>> sophisticated difference between 'no running threads left'
> >>>>> and 'all jobs done'.
> >>>>>
> >>>>> - Sascha
> >>>>>
> >>>>>
> >>>>> Larry Becker schrieb:
> >>>>>> Hi Sascha,
> >>>>>>
> >>>>>>    Adding a 'wakeup' Runnable works great and is easier than using the
> >>>>>> listener anyway.
> >>>>>>
> >>>>>>    By the way, I couldn't find any other code using the Listener
> >>>>>> interface, but I suppose there could be a Plug-in somewhere that does.
> >>>>>>  We should probably leave it out anyway since if we are leaving it in
> >>>>>> for compatibility, it should actually be compatible.  The easiest way
> >>>>>> to find out if it is really needed by anyone but me might be to leave
> >>>>>> it out and see if it breaks anyone's compile.  The same applies to
> >>>>>> getRunningThreads since it doesn't behave exactly like it did before
> >>>>>> either.
> >>>>>>
> >>>>>>   Anyway, thanks for the help.  I'm able to determine the end of
> >>>>>> rendering much more accurately now.
> >>>>>>
> >>>>>> regards,
> >>>>>> Larry Becker
> >>>>>>
> >>>>>> On 6/15/07, Sascha L. Teichmann <[EMAIL PROTECTED]> wrote:
> >>>>>>> Hello Larry,
> >>>>>>>
> >>>>>>> the version of the ThreadQueue is a bit outdated.
> >>>>>>> The version you have has no getRunningThreads() method.
> >>>>>>> This is need for compatibility. And there was a bug in
> >>>>>>> remove(Listener) which is fixed by now.
> >>>>>>> I attach the current ThreadQueue.
> >>>>>>>
> >>>>>>> Now to your problem:
> >>>>>>>
> >>>>>>> The Listeners are in for compatibility and you are right
> >>>>>>> they get there kick when the WORKER_STAY_ALIVE_TIME has
> >>>>>>> expired. But once again: These Listeners _do_ _not_ help
> >>>>>>> you! You want to know when the last job has ended, not
> >>>>>>> when there are no more running Threads. We discussed this
> >>>>>>> already.
> >>>>>>>
> >>>>>>> I would suggest the following solution on your side
> >>>>>>> to archive the desired effect:
> >>>>>>>
> >>>>>>> <code>
> >>>>>>>
> >>>>>>> Graphics2D destination = ... // from outer space
> >>>>>>>
> >>>>>>> LayerViewPanel layerViewPanel = ... // from outer space
> >>>>>>>
> >>>>>>> RenderingManager renderingManager =
> >>>>>>>   layerViewPanel.getRenderingManager();
> >>>>>>>
> >>>>>>> ThreadQueue defaultThreadQueue =
> >>>>>>>   renderingManager.getDefaultRendererThreadQueue();
> >>>>>>>
> >>>>>>> // add all the Renderer Runnables to the ThreadQueue
> >>>>>>> renderingManager.renderAll();
> >>>>>>>
> >>>>>>> final boolean [] locked = { true };
> >>>>>>>
> >>>>>>> // because defaultThreadQueue does its jobs
> >>>>>>> // one after each other append a 'wakeup' Runnable ...
> >>>>>>>
> >>>>>>> defaultThreadQueue.add(new Runnable() {
> >>>>>>>   public void run() {
> >>>>>>>     synchronized (locked) {
> >>>>>>>       locked[0] = false;
> >>>>>>>       locked.notify();
> >>>>>>>     }
> >>>>>>>   }
> >>>>>>> });
> >>>>>>>
> >>>>>>> try {
> >>>>>>>   synchronized (locked) {
> >>>>>>>     // you could simply write
> >>>>>>>     // "while (locked[0]) locked.wait();"
> >>>>>>>     // but following is more defensive
> >>>>>>>     int count = 0;
> >>>>>>>     while (locked[0] && count++ < 10)
> >>>>>>>       locked.wait(10000L);
> >>>>>>>   }
> >>>>>>> }
> >>>>>>> catch (InterruptedException ie) {
> >>>>>>> }
> >>>>>>>
> >>>>>>> renderingManager.copyTo(destination);
> >>>>>>>
> >>>>>>> </code>
> >>>>>>>
> >>>>>>> But as I said earlier, this only works on
> >>>>>>> the defaultRenderingThreadQueue and therefore
> >>>>>>> its only an interim solution. The
> >>>>>>> WMS/DB ThreadQueue is private and a true
> >>>>>>> parallel ThreadQueue.
> >>>>>>>
> >>>>>>> My goal is to add a renderAllSynchronized()
> >>>>>>> to RenderingManager that used the above
> >>>>>>> Runnable/unlock trick. The secret WMS/DB
> >>>>>>> will be eliminated (or better the default one
> >>>>>>> and the WMS/DB ThreadQueue will become the
> >>>>>>> default). This is doable with the
> >>>>>>> RunnableArrayList class I posted a while
> >>>>>>> ago, which simulates the single thread
> >>>>>>> default ThreadQueue. But one step after
> >>>>>>> the other ...
> >>>>>>>
> >>>>>>> Regards, Sascha
> >>>>>>>
> >>>>>>>
> >>>>>>> Larry Becker schrieb:
> >>>>>>>> Sascha,
> >>>>>>>>
> >>>>>>>>  I have reached a point where I need some help with the new
> >>>>>>>> ThreadQueue implementation.  I have modified my code that calls
> >>>>>>>> getRunningThreads to use the Listener with the
> >>>>>>>> allRunningThreadsFinished method instead.  This was much cleaner and
> >>>>>>>> worked fine until I replaced ThreadQueue with your version.  The
> >>>>>>>> problem I seem to be having is that the method doesn't fire until
> >>>>>>>> after the 5 second WORKER_STAY_ALIVE_TIME has expired.  Can you
> >>>>>>>> explain what I should be doing or modify the code so that it fires
> >>>>>>>> when there are no more jobs waiting?
> >>>>>>>>
> >>>>>>>> I have attached the version of ThreadQueue.java that I have been 
> >>>>>>>> using
> >>>>>>>> in case it is outdated.
> >>>>>>>>
> >>>>>>>> thanks,
> >>>>>>>> Larry Becker
> >>>>>>>>
> >>>>>>>>
> >>>>>>>> ------------------------------------------------------------------------
> >>>>>>>>
> >>>>>>>> -------------------------------------------------------------------------
> >>>>>>>> This SF.net email is sponsored by DB2 Express
> >>>>>>>> Download DB2 Express C - the FREE version of DB2 express and take
> >>>>>>>> control of your XML. No limits. Just data. Click to get it now.
> >>>>>>>> http://sourceforge.net/powerbar/db2/
> >>>>>>>>
> >>>>>>>>
> >>>>>>>> ------------------------------------------------------------------------
> >>>>>>>>
> >>>>>>>> _______________________________________________
> >>>>>>>> Jump-pilot-devel mailing list
> >>>>>>>> Jump-pilot-devel@lists.sourceforge.net
> >>>>>>>> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
> >>>>>>> -------------------------------------------------------------------------
> >>>>>>> This SF.net email is sponsored by DB2 Express
> >>>>>>> Download DB2 Express C - the FREE version of DB2 express and take
> >>>>>>> control of your XML. No limits. Just data. Click to get it now.
> >>>>>>> http://sourceforge.net/powerbar/db2/
> >>>>>>> _______________________________________________
> >>>>>>> Jump-pilot-devel mailing list
> >>>>>>> Jump-pilot-devel@lists.sourceforge.net
> >>>>>>> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>> -------------------------------------------------------------------------
> >>>>> This SF.net email is sponsored by DB2 Express
> >>>>> Download DB2 Express C - the FREE version of DB2 express and take
> >>>>> control of your XML. No limits. Just data. Click to get it now.
> >>>>> http://sourceforge.net/powerbar/db2/
> >>>>> _______________________________________________
> >>>>> Jump-pilot-devel mailing list
> >>>>> Jump-pilot-devel@lists.sourceforge.net
> >>>>> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
> >>>>>
> >>>> --
> >>>> http://amusingprogrammer.blogspot.com/
> >>>>
> >>>
> >> -------------------------------------------------------------------------
> >> This SF.net email is sponsored by DB2 Express
> >> Download DB2 Express C - the FREE version of DB2 express and take
> >> control of your XML. No limits. Just data. Click to get it now.
> >> http://sourceforge.net/powerbar/db2/
> >> _______________________________________________
> >> Jump-pilot-devel mailing list
> >> Jump-pilot-devel@lists.sourceforge.net
> >> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
> >>
> >
> >
>
> -------------------------------------------------------------------------
> This SF.net email is sponsored by DB2 Express
> Download DB2 Express C - the FREE version of DB2 express and take
> control of your XML. No limits. Just data. Click to get it now.
> http://sourceforge.net/powerbar/db2/
> _______________________________________________
> Jump-pilot-devel mailing list
> Jump-pilot-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
>


-- 
http://amusingprogrammer.blogspot.com/

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel

Reply via email to