Although the language does not require it, signalling inside the mutex is a best practice

I suggest to create the method `full?` and change line 23 to `if full?`