2012-08-14 43 views
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()Java线程wait()notify()方法

这里有什么问题?

这对我来说是非常重要的,这两种方法中的同步化方法都已经实现。

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

+1

' 'this.notify''指向新线程 – Hachi 2012-08-14 10:59:00

+0

'synchronized(Signal2NoiseRatio.this)' – assylias 2012-08-14 11:00:55

+0

它使用notifyAll而不是notify更安全。 http://stackoverflow.com/questions/37026/java-notify-vs-notifyall-all-over-again – geby 2012-08-14 11:03:40

回答

2

SingleSNR方法thisthis在重写run方法是不一样的对象(内侧runthisThread匿名子类)。你需要确保你是通知你同一个对象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(); 
      } 
     } 
+0

谢谢!有用! :) – hagem 2012-08-14 11:06:22

0

两个“这个” S是不一样的,一个是Signal2NoiseRatio,一个是主题

相关问题