新しいスレッドを生成するServerClassがあります。
各スレッドには、処理用のデータのブロックが与えられます。各スレッドはデータの「x」チャンクを処理し、ServerClassに値を返します。ServerClassは収集された値を平均し、これをスレッドに渡します。そして、スレッドは平均値を使用して作業を再開します。データ全体がスレッドによって処理されるまで、同じプロセスが繰り返されます。
私はこれを書き、実行するたびに異なる出力を取得します。誰かが私が間違っていることを私に説明できますか?
ServerClass
public synchronized void put(double[] weight)
{
//System.out.println(Counter);
weights.add(weight);
if(Counter+1 == NoOfThreads)
{
averageWeights();
notifyAll();
Counter =0;
} else
try {
Counter++;
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
Threads Class
refer // ServerClass Reference
updatedweights // Averaged Value
int slots = data.size() / batchCount;
for(int i=0; i<slots;i++)
{
double[] p = Algo(data,i*batchCount, (i+1)*batchCount, ServerClass.stepSize, labelIndex, refer.updatedweights);
refer.put(p);
}