ThreadPool's destructor must be virtual