[#239] Code clean up

* Refactor logic to exit early when nothing to do
* Use `final` variables when possible
* Fix logic to schedule a task only if the current size of the list is
  equal to the MAX length, and not everytime the size is larger than
  zero