gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 07:37:54 27 4
gpt4 key购买 nike

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

最佳答案

SingleSNR 方法中的

this 和重写的 run 方法中的 this 不是同一个对象(内部runthis指的是Thread的匿名子类)。您需要确保您正在通知您等待的同一个对象,该对象可作为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();
}
}

关于Java线程wait()notify()在一个方法中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11950807/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com