Try with channels to avoid the locking.