Advertisement
Guest User

Untitled

a guest
Apr 24th, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.06 KB | None | 0 0
  1. public List<Integer> search() throws InterruptedException {
  2. List<Integer> result = new ArrayList<>();
  3. Searcher[] searchers = new Searcher[threads];
  4. int quantityOfNumbers = upperBound - lowerBound;
  5. if (threads > quantityOfNumbers) // optimization , don't need extra threads
  6. threads = quantityOfNumbers;
  7.  
  8. int delimiter = quantityOfNumbers / threads;
  9. int rest = quantityOfNumbers % threads + 1; //
  10. searchers[0] = new Searcher(lowerBound, lowerBound + delimiter - 1);
  11. for (int i = 1; i < threads; i++) {
  12. int extra = (rest > 0) ? 1 : 0;
  13. rest--;
  14. searchers[i] = new Searcher(searchers[i - 1].getUpperBound() + 1,
  15. searchers[i - 1].getUpperBound() + delimiter + extra);
  16. }
  17. /*
  18. for (int i = 0; i < threads; i++) {
  19. System.out.println(i + " ---> " + searchers[i].getRanger());
  20. }
  21. */
  22. for (int i = 0; i < threads; i++) {
  23. searchers[i].start();
  24. }
  25. for (int i = 0; i < threads; i++) {
  26. searchers[i].join();
  27. }
  28.  
  29. for (int i = 0; i < threads; i++) {
  30. result.addAll(searchers[i].getResult());
  31. }
  32. return result;
  33. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement