For this project, you will modify your Project 1 Index code and Project 2 Search code to support multithreading using a custom-made conditional read/write lock to create a thread-safe inverted index and a custom-made work queue to manage worker threads.
The build process should be multithreaded such that a worker thread processes a single file. The search process should be multithreaded such that a worker thread processes a single multi-word query line. To do this, you should create new classes (or extend existing classes) to support multithreading.
DO NOT REMOVE YOUR SINGLE THREADING CODE, as you still need to support single threaded building and searching the index.
This project is broken into three parts: v3.0
focused on multithreading the data structure and search process, v3.1
focused on multithreading the build process. See each milestone writeup for details.
<aside>
<img src="/icons/error_gray.svg" alt="/icons/error_gray.svg" width="40px" /> Do NOT use any of the classes in the java.util.concurrent
package and do NOT use the Stream.parallel
method for the multithreaded code.
</aside>
TABLE OF CONTENTS
This project is broken into multiple milestones:
See each milestone for more details.
The Homework 3 homework bundle is related to this project: