Use a ConcurrentLinkedQueue for list of pending tasks
(probably better than synchronized)
Remove pending executable task in scheduling using Iterator.remove
(to avoid ConcurrentModificationException)