JAVA project

Job ID: 34102946

Budget: $30 – $250 USD

The objective of this project is to familiarize you with the creation and execution of threads using
the Thread class methods.Use, when necessary, the following methods to synchronize all threads: run(), start(), currentThread(), getName(), join(), yield(), sleep(random time), isAlive(), getPriority(), setPriority(), interrupt(), isInterrupted().
The use of semaphores to synchronize threads is strictly DISALLOWED. Additionally, you are NOT PERMITTED to use any of the following: wait(), notify(), notifyAll(), the synchronized keyword (for methods or blocks), and any synchronized collections or synchronization tools that were not discussed in class or mentioned here.
You CAN, however, use the modifier volatile and the AtomicInteger and AtomicBoolean classes if you choose to.
Directions: Synchronize the applicant, recruiter, technical_interviewer threads in the context of the problem described below. The number of applicants can be entered as a command line argument. Please refer to and read carefully the project notes, tips and guidelines before starting the project.
It’s finally the start of the semester and applications have opened for internships and new grad positions. Due to limited spots, some applicants will either get the job while the rest get rejected.
Applicants apply for the position at different times during the semester (simulated by sleep of random time). Next, they will busy wait for a response.

Let’s say that applicant1, 4, 6, 8 and 10 got the job. Applicant 1 can terminate right away, applicant 4 will join applicant 1, applicant 6 will join applicant 1 and so on.
After all applicants terminate, then the interviewer will terminate as well.