multi-threader with threadpool