Thread and Executor Service Assignment
credit for this assignment: Finn Voichick and Dennis Cosgrove
Building On Previous Exercises
Be sure to complete the Half & Half and Coarsening exercises first.
Thread
While we strive to make CSE 231 generally applicable across libraries and languages, it would be madness to have a parallel programming class in Java and not have students know how to create a Thread, start it, and join it. In this section of the lab, you will do just that.
Code To Use
MidpointUtils.calculateMidpoint(a,b)
As always, the wiki's reference page can be of help.
Code To Implement
DefaultThreadFactory
class: | DefaultThreadFactory.java | |
methods: | newThread | |
package: | threadfactory.exercise | |
source folder: | student/src/main/java |
method: public Thread newThread(Runnable target)
(sequential implementation only)
Construct and return a new instance of Thread with the target Runnable parameter you are passed.
Do *NOT* start this thread.
Certainly, do *NOT* run this thread.
Do not pass Go. Do not collect $200.
To repeat: just create a new Thread with the target Runnable and return it.
ThreadHalfAndHalfNucleobaseCounter
class: | ThreadHalfAndHalfNucleobaseCounter.java | |
methods: | constructor threadFactory count |
|
package: | count.exercise | |
source folder: | student/src/main/java |
constructor
threadFactory
count
method: public int count(byte[] chromosome, Nucleobase targetNucleobase)
(parallel implementation required)
Executors
Code To Use
As always, the wiki's reference page can be of help.
Code To Implement
ExecutorHalfAndHalfNucleobaseCounter
class: | ExecutorHalfAndHalfNucleobaseCounter.java | |
methods: | constructor executorService count |
|
package: | count.exercise | |
source folder: | student/src/main/java |
constructor
executorService
count
method: public int count(byte[] chromosome, Nucleobase targetNucleobase)
(parallel implementation required)
ExecutorCoarseningNucleobaseCounter
class: | ExecutorCoarseningNucleobaseCounter.java | |
methods: | constructor executorService numRanges count |
|
package: | count.exercise | |
source folder: | student/src/main/java |
constructor
executorService
numRanges
count
method: public int count(byte[] chromosome, Nucleobase targetNucleobase)
(parallel implementation required)
Slice the chromosome up and use invokeAll(tasks) to count the targetNucleobase in parallel.
Correctness
class: | __ThreadAndExecutorTestSuite.java | |
package: | count.exercise | |
source folder: | testing/src/test/java |
Pledge, Acknowledgments, Citations
file: | thread-and-executor-pledge-acknowledgments-citations.txt |
More info about the Honor Pledge