multi thread implementation for download task