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 > -- 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