Seperate multithreaded class into abstract, ThreadTask, ThreadWorker