The abstract specifications and the relative independence between these three components help at the development of generic and reusable programs. Adaptive Programming separates different aspects of the program into different blocks which are then recombined to form the actual program. Combining different synchronisation patterns with different behavioural blocks yields different concurrent programs. Synchronisation patterns should thus be re useable in different contexts. The concurrency code block could be implemented at the meta level.
Peace is a typical example for an extremely careful design of a hierarchy of thread abstractions.
In their work, the component languages are existing OOPs like C and Java. European Conference on Object-Oriented Programming, pp. 81-99, Bologna, Italy, 1994. Again , all these implementation details are transparent to the programmer. In that paper, mutex sets can be named and prefixed with the keywords per object or per class.