Login  Register

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