@InProceedings{SchallerHilderink00, title = "{U}sing {J}ava for {P}arallel {C}omputing - {JCSP} versus {CTJ}", author= "Schaller, Nan C. and Hilderink, Gerald H. and Welch, Peter H.", editor= "Welch, Peter H. and Bakkers, Andr\`{e} W. P.", pages = "205--226", booktitle= "{C}ommunicating {P}rocess {A}rchitectures 2000", isbn= "1 58603 077 9", year= "2000", month= "sep", abstract= "Java provides support for concurrent and parallel programming throughthreads, monitors and its socket and Remote Method Invocation (RMI) classes.However, there have been many concerns expressed about the way in which thissupport is provided, e.g., [1][2], citing problems such as improper implementation ofmonitors and difficulty of programming with threads. Hoareā€™s CommunicatingSequential Processes (CSP) [3][4][5] model fully specifies thread synchronizationand is based on processes, compositions, and channel communication. It provides amathematical notation for describing patterns of communication using algebraicexpressions and contains formal proofs for analyzing, verifying and eliminatingundesirable conditions, such as race hazards, deadlocks, livelock, and starvation.Two independent research efforts provide a CSP based process-oriented designpattern for concurrency implemented in Java: Communicating Sequential Processesfor Java (JCSP) [6] and Communication Threads in Java (CTJ) [7]. In this paper, wecompare these two packages, looking at the philosophy behind their development,their similarities, their differences, their performance, and their use." }