我们日常的sqlite数据库操作,文件的读写操作,其实都很耗时。根据Android的规定,耗时操作不允许在主线程中进行,所以我们都会放到工作线程当中。但是这样就有可能存在同时操作的问题。我们就需要让我们的线程进行排队来操作。这里提供一种队列的实现方式--单线程线程池。
首先我们要定义一个工具类
/**
* 单线程线程池获取
* @author WaterWood
*/
public class SingleLineUtil {
private static SingleLineUtil mInstance;
private ExecutorService singleThreadExecutor;
public static SingleLineUtil getInstance(){
if (mInstance == null){
synchronized (SingleLineUtil.class){
if (mInstance == null){
mInstance = new SingleLineUtil();
}
}
}
return mInstance;
}
private SingleLineUtil() {}
public ExecutorService getSingle(){
if (singleThreadExecutor == null){
synchronized (SingleLineUtil.class){
if (singleThreadExecutor == null){
singleThreadExecutor = Executors.newSingleThreadExecutor();
}
}
}
return singleThreadExecutor;
}
}
以后项目中大家都用这类,可以保证所有操作都放到这个单线程线程池中。
接着在我们要进行单线程线程池操作的地方,定义全局变量
private ExecutorService singleThreadExecutor;
接着为该变量赋值
singleThreadExecutor = SingleLineUtil.getInstance().getSingle();
为线程池中添加一个线程
singleThreadExecutor.execute(new Runnable() {
@Override
public void run() {
}
});
线程中的操作放到run方法中。这样我们就可以实现一个队列执行的功能。