Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Sum extends RecursiveTask<Long>
- {
- static final int BlockSize = 5000;
- int start, end;
- int[] data;
- Sum(int[] data, int start, int end)
- {
- this.data = data;
- this.start = start;
- this.end = end;
- }
- protected Long compute()
- {
- /*
- Sorumluluk limitten küçükse direk hesapla yoksa alt görevlere dağıt ve
- bunu recursive olarak yinele
- */
- if (end - start <= BlockSize)
- {
- long sum = 0;
- for (int i = start; i < end; ++i)
- {
- sum = sum + data[i];
- }
- return sum;
- }
- else
- {
- // Sorumluluğu böl ve alt görevler oluşturarak onlara paylaştır.
- int mid = start + (end - start) / 2;
- Sum left = new Sum(data, start, mid);
- Sum right = new Sum(data, mid, end);
- left.fork();
- right.fork();
- long rightSum = right.join();
- long leftSum = left.join();
- return leftSum + rightSum;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement