まず、やる気を起こさせる例を次に示します。
public class Algorithm
{
public static void compute(Data data)
{
List<Task> tasks = new LinkedList<Task>();
Client client = new Client();
int totalTasks = 10;
for(int i = 0; i < totalTasks; i++)
tasks.add(new Task(data));
client.submit(tasks);
}
}
// AbstractTask implements Serializable
public class Task extends AbstractTask
{
private final Data data;
public Task(Data data)
{
this.data = data;
}
public void run()
{
// Do some stuff with the data.
}
}
ですから、私はいくつかの並列プログラミングを行っており、多数のタスクを作成するメソッドを持っています。タスクは操作対象のデータを共有しますが、各タスクにデータへの参照を与えるのに問題があります。問題は、タスクがシリアル化されると、タスクごとにデータのコピーが作成されることです。さて、このタスククラスでは、データを静的に参照して1回だけ保存することができますが、これを行うことは、タスククラスのコンテキストではあまり意味がありません。私の考えは、オブジェクトを静的なものとして別の外部クラスに格納し、タスクにクラスからオブジェクトを要求させることです。これは、タスクが送信される前に実行できます。おそらく、上記の例の計算メソッドで実行できます。これは適切だと思いますか?誰かが提案されたアイデアに関する代替の解決策やヒントを提供できますか?ありがとう!