4 ms·
It's generally suggested that you make heavy usage of the private and final keywords when writing Java code in general and concurrent java code in particular.
by jbooth 16y ago
It's generally suggested that you make heavy usage of the private and final keywords when writing Java code in general and concurrent java code in particular.
ExecutorService + SynchronousQueue/LinkedBlockingQueue + Callables without mutable state = basically a functional coroutine model of programming in Java with non-lispy syntax.
If you're doing it right, you're not allocating new threads for every task (and neither is Erlang, they're "cheating" in roughly the same way I'm describing - their "threads" are really "tasks"). You push tasks onto your work queue, taking up very little memory per task, and your ExecutorService takes care of them. The only difference is you have to set up your ExecutorService yourself, which is a plus and a minus compared to the runtime implicitly managing one for you.. sometimes it'd be convenient to have a default coroutine manager, I guess.