0
public class Signal2NoiseRatio
{
    public ImagePlus SingleSNR(ImagePlus imagePlus) throws InterruptedException
    {

        new Thread()
        { 
          @Override public void run() 
          { 
              for (int i = 0; i <= 1; i++)
              { 
                  System.out.println("in queue"+i);
              }

              synchronized( this ) 
              { 
                  this.notify(); 
              }
            } 
        }.start();


        synchronized (this) 
        {
        this.wait();
        }


        return imagePlusToProcess;
    }
}

notify()达不到wait()

这里有什么问题?

对我来说,实现这一种方法中的两种同步方法是很重要的。

主线程执行一个在其中呈现图像的帧。该方法是否有可能wait()将框架引导到白色窗口?

4

2 回答 2

2

thisSingleSNR方法和this被覆盖的run方法中不是同一个对象(里面runthis指的是匿名子类Thread)。您需要确保您通知的对象与您所wait针对的对象相同,该对象可用于Signal2NoiseRatio.this

      @Override public void run() 
      { 
          for (int i = 0; i <= 1; i++)
          { 
              System.out.println("in queue"+i);
          }

          synchronized( Signal2NoiseRatio.this ) 
          { 
              Signal2NoiseRatio.this.notify(); 
          }
        } 
于 2012-08-14T11:01:00.587 回答
0

两个“this”不一样,一个是Signal2NoiseRatio,一个是Thread

于 2012-08-14T11:01:16.527 回答