如何解决sqlite4java多线程支持解决方案
| 我正在尝试通过游戏实现Java Swing GUI应用程序。游戏是计算5秒钟内一次按钮被单击的次数。 我在我的一个Java GUI项目中使用了“ 0”。它非常简约,因此仅支持单线程应用程序。 我想在5秒钟后执行一些SQL查询。我在按钮的onclick侦听器中启动了一个线程,该线程的run()方法实现如下:run() {
timeLeft = 5;
score = 0;
while(timeLeft>0)
Thread.sleep(100);
timeLeft -= 0.1;
update left time on GUI;
}
// time is up
execute some SQLite INSERT query here;
}
而且由于sqlite4java是单线程支持的,因此它会引发异常:
SQLite error:com.almworks.sqlite4java.SQLiteException:
[-98] DB[1] confined(Thread[main,5,]) used (Thread[Thread-3,6,main])
线程结束后(线程外)如何执行?由于被调用方线程和实例化数据库的线程(主线程)不同,因此引发异常。
该线程终止后,如何使主线程发信号(并在主线程中处理该信号)?
我要做的就是执行查询以将用户的分数添加到高分列表中。那不是家庭作业,我正在尝试为自己的ORM框架开发概念验证应用程序。
解决方法
正如@corlettk建议的那样,您需要有一个单独的线程来进行数据库操作。 sqlite4java带有SQLiteQueue,它可以为您完成此任务。有一个教程和带有示例的javadoc。
确保使用SQLiteJob包装所有数据库操作,并将它们传递到队列。
希望这可以帮助!
伊戈尔
, 艾哈迈德,
我猜您将必须在一个线程上完成所有的“数据库工作”(包括dis / connect),这应该专门用于此目的。甚至在请求队列后面“隐藏”。
祝你好运。您是否可以“仅”交换RDBMS?
干杯。基思
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。