AsyncTask不与第二个AsyncTask同时运行

Edd*_*Edd 1 multithreading android android-asynctask

我有一个AsyncTask

private class LoadData extends AsyncTask<String, Void, String> {
    private String WEBURL;
    LoadData(String url){
        this.WEBURL=url;
    }
    protected String doInBackground(String... params) {
        System.out.println("Downloading");
        URL url = new URL(WEBURL);
        URLConnection conn = url.openConnection();
        conn.connect();
        byte buffer[] = new byte[1024];
        InputStream in = new BufferedInputStream(url.openStream());
        String contents="";
        while((count = in.read(buffer))!=-1){
        total+=count;
        contents += new String(buffer, 0, count);
        }
        System.out.println("Downloaded");
        in.close;
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我试着LoadData打电话给两个人

new LoadData("http://www.google.com").execute();
new LoadData("http://www.stackoverflow.com").execute();
Run Code Online (Sandbox Code Playgroud)

我希望输出:

正在下载下载正在下载

但相反,我得到了

正在下载已下载的下载

这意味着AsyncTasks不是同时执行的.为什么是这样?我认为线程的重点是这不会发生?+有没有办法让他们同时运行而不需要更改太多的代码?

ian*_*ake 5

根据执行顺序下的AsyncTask文档:

从开始HONEYCOMB,任务在单个线程上执行,以避免由并行执行引起的常见应用程序错误.如果您真的想要并行执行,可以executeOnExecutor(java.util.concurrent.Executor, Object[])使用THREAD_POOL_EXECUTOR.

也就是说, new LoadData("http://www.google.com").executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);