Re: Contradiction with show() method
Posted by
Michael Schmid on
Mar 30, 2009; 8:26am
URL: http://imagej.273.s1.nabble.com/Contradiction-with-show-method-tp3693120p3693127.html
Hi David,
Java is multi-threaded; displaying images is usually done in a
separate thread. Especially on multiprocessor machines, this improves
performance.
Thus, it can easily happen that "im1.show();" displays the image a
few thenths of a second after that method is called; at that time the
data are modified already.
(not a bug, a feature ;-)
Michael
________________________________________________________________
On 29 Mar 2009, at 22:34, David William Webster wrote:
> I am learning Java via th "monkey see, monkey do" method and get
> what seems
> to be a contradiction.
>
> I ran a test similar to the one shown in Burger and Berge on page
> 502.(see
> run method below). Without the updateAndDraw(), the invert()
> result should not be display'ed. But,
> In case 1, with the wait(2000) and updateAndDraw() commented out,
> I get the inverted image being displayed (It shouldn't be).
> In case 2, I use the wait(200) and get only the original image being
> displayed.
> In case 3, I add the updateAndDraw() and get the inverted image.
> Only case 3 makes any sense
>
>
> public void run(ImageProcessor ip) {
>
> ImageProcessor ip1 = ip.duplicate();
> ImagePlus im1 = new ImagePlus("im1",ip1);
> im1.show();
> //IJ.wait(2000);
> ip1.invert();
> //im1.updateAndDraw();
> }
>
> David Webster