Multithreading in Java : Part III