diff --git a/downloadutil/src/main/java/com/arialyy/downloadutil/util/DownLoadUtil.java b/downloadutil/src/main/java/com/arialyy/downloadutil/util/DownLoadUtil.java
index ee455d25..74c2c260 100644
--- a/downloadutil/src/main/java/com/arialyy/downloadutil/util/DownLoadUtil.java
+++ b/downloadutil/src/main/java/com/arialyy/downloadutil/util/DownLoadUtil.java
@@ -13,6 +13,8 @@ import java.net.HttpURLConnection;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.Properties;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
 
 /**
  * Created by lyy on 2015/8/25.
@@ -41,6 +43,7 @@ final class DownLoadUtil {
   private int mStopNum   = 0;
   private Context        mContext;
   private DownloadEntity mDownloadEntity;
+  private ExecutorService mFixedThreadPool = Executors.newFixedThreadPool(THREAD_NUM);
 
   public DownLoadUtil(Context context, DownloadEntity entity) {
     mContext = context.getApplicationContext();
@@ -67,6 +70,10 @@ final class DownLoadUtil {
    */
   public void cancelDownload() {
     isCancel = true;
+    Log.d(TAG, "++++++++++++++++ onCancel +++++++++++++++++");
+    isDownloading = false;
+    mFixedThreadPool.shutdown();
+    mListener.onCancel();
   }
 
   /**
@@ -74,6 +81,10 @@ final class DownLoadUtil {
    */
   public void stopDownload() {
     isStop = true;
+    Log.d(TAG, "++++++++++++++++ onStop +++++++++++++++++");
+    isDownloading = false;
+    mFixedThreadPool.shutdown();
+    mListener.onStop(mCurrentLocation);
   }
 
   /**
@@ -153,6 +164,7 @@ final class DownLoadUtil {
           }
           int code = conn.getResponseCode();
           if (code == 200) {
+
             int fileLength = conn.getContentLength();
             //必须建一个文件
             Util.createFile(filePath);
@@ -240,7 +252,8 @@ final class DownLoadUtil {
               if (l == -1) continue;
               Thread task = tasks.get(l);
               if (task != null) {
-                task.start();
+                mFixedThreadPool.execute(task);
+                //task.start();
               }
             }
           } else {
@@ -374,11 +387,11 @@ final class DownLoadUtil {
         String location = String.valueOf(currentLocation);
         Log.i(TAG, "thread_" + dEntity.threadId + "_stop, stop location ==> " + currentLocation);
         writeConfig(dEntity.tempFile.getName() + "_record_" + dEntity.threadId, location);
-        if (mStopNum == THREAD_NUM) {
-          Log.d(TAG, "++++++++++++++++ onStop +++++++++++++++++");
-          isDownloading = false;
-          mListener.onStop(mCurrentLocation);
-        }
+        //if (mStopNum == THREAD_NUM) {
+        //  Log.d(TAG, "++++++++++++++++ onStop +++++++++++++++++");
+        //  isDownloading = false;
+        //  mListener.onStop(mCurrentLocation);
+        //}
       }
     }
 
@@ -396,9 +409,9 @@ final class DownLoadUtil {
           if (dEntity.tempFile.exists()) {
             dEntity.tempFile.delete();
           }
-          Log.d(TAG, "++++++++++++++++ onCancel +++++++++++++++++");
-          isDownloading = false;
-          mListener.onCancel();
+          //Log.d(TAG, "++++++++++++++++ onCancel +++++++++++++++++");
+          //isDownloading = false;
+          //mListener.onCancel();
         }
       }
     }