您的
charArray变量至少可以从两个线程(在Process中启动的一个线程和您的Input类中的EDT)访问,因此您需要同步这些访问以确保可见性(即,确保一个线程所做的更改在另一个线程中可见)
)。
请注意,您的代码中还有其他一些问题,例如:
- 您不应在构造过程中让它转义(通过调用
input = new Input(this)
或component.addKeyListener(this)
)-这可能导致在多线程环境中出现怪异的行为 - 您应该尝试
Jframe
在Process
类中使用变量而不是扩展Jframe
- 我不确定如何计划将其设置
running
为false,但是run
方法中该变量周围没有同步,因此您可能看不到它变为false。



