Using Java for Parallel Computing JCSP versus CTJ, a comparison
Gerald H. Hilderink, Nan C. Schaller, Peter H. Welch · University of Twente Research Information · 2000
Java provides support for concurrent and parallel programming through threads, monitors and its socket and Remote Method Invocation (RMI) classes. However, there have been many concerns expressed about the way in which this support is provided, e.g., (1)(2), citing problems such as improper implementation of monitors and difficulty of programming with threads. Hoare's Communicating Sequential Processes (CSP) (3)(4)(5) model fully specifies thread synchronization and is based on processes, compositions, and channel communication. It provides a mathematical notation for describing patterns of communication using algebraic expressions and contains formal proofs for analyzing, verifying and eliminating undesirable conditions, such as race hazards, deadlocks, livelock, and starvation. Two independent research efforts provide a CSP based process-oriented design pattern for concurrency implemented in Java: Communicating Sequential Processes for Java (JCSP) (6) and Communication Threads in Java (CTJ) (7). In this paper, we compare these two packages, looking at the philosophy behind their development, their similarities, their differences, their performance, and their use.