Java 在android中以并行线程从大量文本文件加载数据

Java 在android中以并行线程从大量文本文件加载数据,java,android,multithreading,android-asynctask,threadpool,Java,Android,Multithreading,Android Asynctask,Threadpool,在我的应用程序中,一开始我必须从大约20个文本文件加载数据,只加载一次。我首先在AsyncTask.THREAD\u POOL\u EXECUTOR上使用Asynctasks,但是每个AsyncTask的保持活动时间是一个问题,这会破坏排队时间很长的Asynctasks。有没有办法更改此默认的保持活动时间?如果是,请告诉我。现在,我已切换到以下代码:- public class DBLoader { public static int completed = 0; publi

在我的应用程序中,一开始我必须从大约20个文本文件加载数据,只加载一次。我首先在AsyncTask.THREAD\u POOL\u EXECUTOR上使用Asynctasks,但是每个AsyncTask的保持活动时间是一个问题,这会破坏排队时间很长的Asynctasks。有没有办法更改此默认的保持活动时间?如果是,请告诉我。现在,我已切换到以下代码:-


public class DBLoader {

    public static int completed = 0;
    public static int nthreads;
    Executor executor;

    public DBLoader(int nthreads) {
        executor = java.util.concurrent.Executors.newFixedThreadPool(nthreads);
        this.nthreads = nthreads;
    }

    public void startThread(Thread thread){
        executor.execute(thread);
    }
}
我的每个线程从原始资源中读取一个文件,并将其放入本地数据库


InputStream is = InputStreamReader(context.getResources().openRawResource(R.raw.filename));
现在,我在MotoG1上阅读8个文件,大约需要50秒。这是不可接受的。请建议一种更好的方法。我正在使用greendao实现本地数据库。
提前感谢。

静态变量
THREAD\u POOL\u EXECUTOR
的构造如下:

    public static final Executor THREAD_POOL_EXECUTOR
        = new ThreadPoolExecutor(CORE_POOL_SIZE, MAXIMUM_POOL_SIZE, KEEP_ALIVE,
                TimeUnit.SECONDS, sPoolWorkQueue, sThreadFactory);

我不明白为什么您不能在修改
保持活动时间的情况下构建自己的
ThreadPoolExecutor
,同时复制任何私有参数。

X-Y-Problem。不要使用文本文件初始化数据库。keepalive不会终止任务:它只是删除池中不再需要的线程。你的问题在别处。也许是你需要的?明白了!我将使用.db文件初始化我的数据库。谢谢费尔多!这一联系澄清了我关于“让你活着”的概念。谢谢zapl!在这里找到了从资产读取db的方法。再一次抱歉,听起来这么没意思,但是我怎样才能从文本文件中获取这个.db文件呢?我可以使用我的应用程序每次生成的.db吗?我在哪里找到它?是的!我试过了。但这并不能解决加载db的时间问题!无论如何谢谢你