Easy thread safety with JRuby
EDIT: Beauty, as they say, is pain. In exchange for liberating your code from locks, piling the work onto a queue is approximately ~10x slower than a traditional approach. A quick profile suggests that the expense of block creation is non-trivial. It's still nicer to look at though, right?
More for my benefit, but it's handy that JRuby lets you use asynchronous Java queues. Want to make something like this thread-safe?
Just wrap the assignment in a Runnable (JRuby coerces blocks/Procs/lambdas into Runnables for you) and submit it to a single-threaded Executor. All calls to inc and dec execute one at a time, in-order:
Tasks are applied FIFO, @value stays consistent without locks- sound familiar?