Java线程wait()notify()在一个方法中

时间:2012-08-14 10:55:25

标签: java multithreading wait notify

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()方法是否有可能将框架引导到白色窗口?

2 个答案:

答案 0 :(得分:2)

this方法中的

SingleSNR和被覆盖的this方法中的run不是同一个对象(run内,this是指到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(); 
          }
        } 

答案 1 :(得分:0)

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