sqlite4java中的多线程队列使用(线程安全)

前端之家收集整理的这篇文章主要介绍了sqlite4java中的多线程队列使用(线程安全)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

sqlite4java是sqlite驱动的一个开源项目,效率和稳定性非常的不错,关键是它在各个平台下均有本地实现,跨平台做的很不错,使用也非常的简单,又能提供x86平台和arm平台的支持,windows、linux、安卓全面支持,该项目官方网站:https://code.google.com/p/sqlite4java/

最新版本:

sqlite4java-282withsqlite 3.7.10and Android support

但是关于其中多线程下确保安全的队列:

sqliteQueue官方网站的介绍非常的少,下面就举例说明它的用法

测试主程序:

public class Mainapp {



/**
* @param args
* @throws sqliteException
* @throws InterruptedException
* @throws IOException
*/
public static void main(String[] args) throws sqliteException,IOException,InterruptedException {
sqliteQueue myQueue=new sqliteQueue(new File(file_db));
myQueue.start();

//主线程一定要建立唯一的sqliteQueue,这个队列已经打开好数据库,在myQueue.start();

//后,就在其他任何线程可以往队列里加入数据库操作(sqliteJob),当然主线程也是可以的。

sql_thread sql_thread1=new sql_thread(myQueue);
Thread t1=new Thread(sql_thread1);

sql_thread sql_thread2=new sql_thread(myQueue);
Thread t2=new Thread(sql_thread2);

//******启动线程

t1.start();
t2.start();
}
}

//*************************************sql操作线程*****************************************************

public class sql_thread implements Runnable{
private sqliteQueue myQueue;
public sql_thread (sqliteQueue myQueue) {
this.myQueue=myQueue;
}
@Override
public void run() {

for (int i=0;i<1000;i++){
insert_Record("插入1",“插入2”); // 本地有查询方法就不用传入myQueue,否则参数里需要带上myQueue直到传递到sqlite操作方法

}

}

//********************************写数据库**************************************************************

public static Boolean insert_Record (final String cardno,final String card_type) {
return myQueue.execute(new sqliteJob<Boolean>() {
protected Boolean job(sqliteConnection connection) throws sqliteException {
sqliteStatement st = connection.prepare("insert into record(cardno,card_type) values (?,?)");
try {
st.bind(1,cardno);
st.bind(2,card_type);
st.step();
return true;
} finally {
st.dispose();
}
}
}).complete();
}

//结束

}

如果有什么疑问可以留言。

原文链接:https://www.f2er.com/sqlite/200793.html

猜你在找的Sqlite相关文章