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
Half_And_Half_Nucleobase_Count_Assignment#Midpoint
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