public class Signal2NoiseRatio
{
public ImagePlus SingleSNR(ImagePlus imagePlus) throws InterruptedException
{
new Thread()
{
@Override public void run()
{
JFrame imageFrame = new JFrame("ROI");
Container imageFrame_Container = imageFrame.getContentPane();
IIImagePanel imagePanel = new IIImagePanel();
imageFrame_Container.add(imagePanel);
imagePanel.setImage(imagePlus.getImage());
imagePanel.getDisplayedImage();
imageFrame.setVisible(true);
final SNRSingleImageListener sNRSingleListener = new SNRSingleImageListener(imagePanel);
imagePanel.addMouseListener(sNRSingleListener);
imagePanel.addMouseMotionListener(sNRSingleListener);
}
}.start();
new Thread()
{
@Override public void run()
{
for (int i = 0; i <= 2000; i++)
{
System.out.println("schleife "+i);
// ask if useractions are done ..
}
synchronized(Signal2NoiseRatio.this)
{
Signal2NoiseRatio.this.notifyAll();
}
}
}.start();
synchronized (this)
{
this.wait();
// if userinteractions are done, go on
}
return imagePlusToProcess;
}
}
第一個new Thread()
執行在其中呈現圖像的幀。我的目的是在新線程中呈現圖像,以等待圖像上的某些用戶交互。但是代碼引導框架變成白色窗口,圖像不可見,並且框架不可用。Java並行線程
在第二個線程中,我想在短時間間隔內詢問用戶操作是否完成。
這不是一個很好的解決方案,但它有可能嗎?這裏有什麼問題?
謝謝你stackoverflow.com!
你'IIImagePanel'類沒有線程工作? – martijno 2012-08-14 12:46:29
一個問題是,您無法從除事件分派線程以外的任何線程創建或訪問Swing組件。其次,您的'notifyAll()'調用永遠不會執行,因爲它位於'synchronized'塊中。我相信你所尋找的是什麼,這些「同步」塊都不是必需的。 – 2012-08-14 12:48:41
IIImagePanel工作時沒有線程。 – hagem 2012-08-14 13:36:56