Java-GUI界面下添加选项和删除选项的线程同步
“我们原来的系统里菜单选项(Add Delete Find List),增加(Add)与删除(Delete)就有严格的排他性,你在增加的时候,是不允许删除的,或者你在删除的时候是不允许增加或者查找、遍历的,不然查找的结果或显示的结果与实际结果不会相同,发生我们说过的读写相关的问题。
在前期试验的基础上,考虑如何对2中我们提出的问题进行改进?(当然,这里肯定是通过线程同步的技术加以实现)”
思路是怎么样的呢?求大神指导!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
针对你这个问题,解决的办法有很多。
有些办法是和你的应用程序架构有关的。
其实就是对共享资源的多线程操作。
简单的方法就是在你现在的共享数据结构上每个item增加一个互斥量(类似锁的概念)
每一种操作共享数据的方法,先检查一下这个互斥量
1.GUI本身是单线程的,菜单按钮的listener永远在UI的单线程中执行,所以如果你把增删改查的代码写在这些listener中,你永远不会得到“线程不安全”的结果。
2,当然,你是否把操作逻辑写在listener中,是要考虑这个操作的执行效率以及耗时的。如果操作很负复杂漫长,那么就要单独找一根线程组做它们。
3,无论是单独找线程去做,建议把操作任务封闭在一个线程里去做。宛如生产者消费者模型那样,商品就是那些要执行的任务。
4,如果3成立,最好的方案就是使用callable与futrue
GUI上直接disable掉不就行了……