For this homework, you will modify the work queue implementation and use it to find primes. Specifically, you must:
-
Add a
pending
variable to theWorkQueue
class to track unfinished work and implement afinish()
method that waits until there is no more pending work. Use this new functionality inPrimeFinder
; there should not be apending
variable orTaskManager
nested class in thePrimeFinder
class! -
Implement the multithreaded
findPrimes(int, int, int)
method inPrimeFinder
using your modifiedWorkQueue
class. There should be 1 task orRunnable
object for each number being tested and therun()
method of these objects should use theisPrime(int)
method.
Below are some hints that may help with this homework assignment:
-
If you move tracking of the
pending
variable into theWorkQueue
class properly, there is no need to create a nestedTaskManager
class within thePrimeFinder
class. You will need to create an inner "task" class, however. -
Do not try to use lambda expressions or streams here, since data must be mutated outside of a thread's scope.
These hints are optional. There may be multiple approaches to solving this homework.
See the Javadoc and TODO
comments in the template code in the src/main/java
directory for additional details. You must pass the tests provided in the src/test/java
directory. Do not modify any of the files in the src/test
directory.
See the Homework Guides for additional details on homework requirements and submission.