This type of logic does scale. Fortunately, there is a way to build the CSP model on top of Java threads. The Java language is unchanged, but application programmers work solely with the CSP classes to glue their threads together. They can inherit all the CSP design and analysis methods and tools. Multi-threaded systems become structured to reflect real world system hierarchies.
Components become automatically thread-safe and reusable.
The nasty accidents of deadlock, livelock and starvation can be ruled out by design. System complexity can be ramped up with linear increase in effort. And no run-time overheads are imposed that wouldn't be needed anyway to prevent race hazards. The above work has been done. There are other design rules meeting other design aims that guarantee freedom from deadlock, livelock and starvation for CSP-conforming systems.