Fixed a CpsVmThread leak problem.

There's no need to allocate a new thread. We can just use an existing
ExecutorService, so long as the execution is serialized.

See: https://trello.com/c/s8o2MZ6p/87-cpsvmthread-never-collected