首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jython线程安全如何应用于Java Swing?

Jython线程安全如何应用于Java Swing?
EN

Stack Overflow用户
提问于 2015-03-14 04:10:52
回答 1查看 106关注 0票数 2

我想知道Jython的内存模型如何应用于创建Java Swing应用程序。

为了避免thread interferencememory inconsistency错误,大多数图形用户界面代码都运行在事件分派线程上。

但是,Jython内存模型可以防止内存不一致错误,因为所有变量都是易失性的。Jython中的原子操作减少了线程干扰。

这个Jython concurrency chapter说明,“读取或替换单个实例属性”是一个原子操作。这也适用于Jython中使用的Java对象吗?

Jython的内存模型是否改变了在Swing应用程序中处理并发的方式?

EN

回答 1

Stack Overflow用户

发布于 2016-03-16 09:46:14

Jython的内存模型属性可能在很小程度上减少了线程干扰,但线程干扰的大部分问题仍然存在。我主要指的是数据结构的一致性。这会影响几乎所有包含不同数量项的数据结构。例如,要附加到ArrayList,可能需要在幕后执行一些操作:检查当前大小和分配的空间(如果用完,可能分配更多的空间),在结束后的下一个单元格处分配一个引用,并递增大小变量。或者,在有间隙的缓冲区中,插入字符可能需要几个变量,这些变量指定间隙所在的位置,并在必须移动间隙的情况下复制大量引用。每个操作可能是原子的,但是如果线程在此操作序列的中间被切换,则在原始线程返回以完成数据结构修改操作之前,从试图读取或写入数据结构的任何其他线程的角度来看,数据结构将看起来是损坏的。Swing肯定会使用这些数据结构,当然还有很多其他数据结构。

顺便说一下,这是关于原子性的一个很好的观点。事实证明,引用赋值在Java语言中也是原子操作,但在从Java语言中读取longdouble时要小心,因为writing these 64-bit primitives on 32-bit architectures is not necessarily atomic (即可能只编写了一半)。在Jython中,这不是问题,因为所有变量都是volatile

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29041109

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档