gpt4 book ai didi

等待并行代码完成的java代码

转载 作者:行者123 更新时间:2023-11-28 22:42:55 26 4
gpt4 key购买 nike

我有一个服务器代码来处理图像。

现在有 n 个请求试图执行导致 OutOfMemory 错误或服务器挂起并且服务器进入无响应状态的代码。

为了阻止代码一次执行所有请求,我限制使用下面的方法一次执行一个代码,其中我有一个变量

如果变量是 10 然后等待变量到达 0

如果为 0 则将其设置为 10 然后执行代码

运行代码,最后将 i 设置为 0

这里的代码 -

static newa.Counter cn;

public int getCounta() {

return cn.getCount();

}

public void setCounta(int i) {
cn = new newa.Counter();
cn.setCount(i);

}

我正在执行此操作 -

public BufferedImage getScaledImage(byte[] imageBytes)
{
int i=0;
Boolean b = false;
BufferedImage scaledImage = null;
newa.NewClass1 sc = new newa.NewClass1();
try {
sc.getCounta();
} catch (NullPointerException ne) {
sc.setCounta(0);
}

i = sc.getCounta();

if(i==0)
{
sc.setCounta(10);
b = true;
}
else
{
while( b == false)
{
try
{
Thread.sleep(2000);
i = sc.getCounta();
if( i==0)
{
sc.setCounta(10);
b = true;
System.out.println("Out of Loop");
}
} catch (InterruptedException ex) {
System.out.println("getScaledImage Thread exception: " + ex);
}
}
}

..... execute further code

try { } catch { } finally { sc.setCounta(0); }

}

有什么方法可以使用 Runnable 接口(interface)或其他东西来简化这个过程,因为我不知道如何进行多线程处理。

最佳答案

忘记计数器并使用同步方法。将您的方法头更改为:

public synchronized BufferedImage getScaledImage(byte[] imageBytes)

这让所有进入该方法的线程等待,直到没有其他线程正在执行该方法。

关于等待并行代码完成的java代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21562000/

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