Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public List<Integer> search() throws InterruptedException {
- List<Integer> result = new ArrayList<>();
- Searcher[] searchers = new Searcher[threads];
- int quantityOfNumbers = upperBound - lowerBound;
- if (threads > quantityOfNumbers) // optimization , don't need extra threads
- threads = quantityOfNumbers;
- int delimiter = quantityOfNumbers / threads;
- int rest = quantityOfNumbers % threads + 1; //
- searchers[0] = new Searcher(lowerBound, lowerBound + delimiter - 1);
- for (int i = 1; i < threads; i++) {
- int extra = (rest > 0) ? 1 : 0;
- rest--;
- searchers[i] = new Searcher(searchers[i - 1].getUpperBound() + 1,
- searchers[i - 1].getUpperBound() + delimiter + extra);
- }
- /*
- for (int i = 0; i < threads; i++) {
- System.out.println(i + " ---> " + searchers[i].getRanger());
- }
- */
- for (int i = 0; i < threads; i++) {
- searchers[i].start();
- }
- for (int i = 0; i < threads; i++) {
- searchers[i].join();
- }
- for (int i = 0; i < threads; i++) {
- result.addAll(searchers[i].getResult());
- }
- return result;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement