|Keep It Simple, Stupid|
Is in working progress for years! How many years we will need to wait to have a good multi-threading model on Perl? I just have waited to much!I won't pretend that support for robust threading is well implemented in perl5... it's just not.
However, Java's concurrency is not exactly all that.
I'd say that Java's concurrency primitives (and the design patterns programmers build on them) are the state-of-the-art circa 1997.
There are wonderful new ways to think about (and express in code) concurrency that are only really supported well by languages like Erlang, Haskell and Scheme (please let's not have an argument about Scheme). Java's concurrency primitives are concise, robust and orthogonal for the Java language but do not necessarily map well to languages with (encouraged) abstraction techniques based around closures and/or first-class functions.
I (and many others) agree that perl5's support for threading needs serious work (looks like progress in Parrot/Pugs is good in that area) and that increasingly, folks will focus on concurrency as a dealbreaker, what with 4, 8 and more cores becoming the norm any-time-now.
If you're concerned about writing good, concurrent, perl5 code today, you might try designing your code around message-passing (look at Thread::Queue) as in Erlang, as this works well in practice.