Went through Core Java Concurrency last few days. Still feel the headache of fighting concepts like, Collections vs. Concurrent Collections, Deadlock vs. Livelock, Starvation vs. Fairness, Runnable vs. Callable, ExecutorService vs. CompletionService. More added-on those brain drills like coordination classes CyclicBarrier, CountDownLatch, Exchanger ...
Definitely Java Concurrency gets its muscle and power. Don't know how many you guys have real experience and examples with Java Concurrency besides GLIDe project. What your comments?
Basically, from my understanding, if you want to get concurrency working correctly in Java, you have to depend on java.util.concurrent package. Admittedly it's powerful, but looking the boilerplate codes and plumbing work have to carry on clumsily, just don't feel things are right.
So I'd like to discuss whether there is a better solution in Java.
Scala, if you have the choice, is certainly a better choice replacing Java especially in backend in concurrency. Like ecstasy for Java developers, Scala is moving developers' focus away from the meat of the problem, and leaving low-level details of concurrent programming to a framework to solve.
I haven't learned Scala yet, but have heard positive things about how it handles concurrency.