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

Jython线程安全性如何应用于Java Swing?,java,swing,jython,Java,Swing,Jython,我想知道Jython的内存模型如何应用于创建JavaSwing应用程序 大多数GUI代码在事件分派线程上运行,以避免错误 然而,Jython内存模型可以防止内存不一致性错误,因为所有变量都是易变的。Jython中的原子操作减少了线程干扰 也就是说,“读取或替换单个实例属性”是一个原子操作。这是否也适用于Jython中使用的Java对象 Jython的内存模型是否改变了Swing应用程序中处理并发的方式?Jython的内存模型属性可能会在一定程度上减少线程干扰,但线程干扰的大部分问题仍然存在。我主

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

大多数GUI代码在事件分派线程上运行,以避免错误

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

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


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

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


顺便说一下,关于原子性,这是一个很好的观点。事实证明,在Java中,引用赋值也是原子操作,但是在从Java中读取
long
s和
double
s时,应该注意一些,因为(也就是说,只有一半可能被写入)。在Jython中,这不是一个问题,因为所有变量都是
volatile

所有支持的平台都是单线程的,所以所有Swing GUI对象都应该只在上构造和操作。好的,你能说一下为什么这适用于Jython吗?所有支持的平台上的语言都有这个限制;请注意用于的
EventQueue.invokeLater()