A classic computer science problem to emphasize particular themes and aspects of concurrent programming
My implementation employs sempahores to acquire and release the Forks. Java's native sempaphore Class is abstracted around Fork actions.
As of 6/24/17 I cannot confirm whether no deadlocks occur in the long run.