我计划使用 Swing 编写一个 java 代码编辑器,主要功能是突出显示关键字、字符串和变量等代码段。我需要一些关于如何实现程序的建议,我的一位朋友告诉我使用 2 个单独的线程,一个用于编辑,一个用于突出显示代码,但是如何在这 2 个线程之间建立通信?
如果我不使用单独的线程,它会对我的程序有什么影响吗?
我真的很困惑。请帮助我,提出一些建议。
编辑:还有一个问题我应该为此使用 JEditorPane 还是 JTextPane ?
我计划使用 Swing 编写一个 java 代码编辑器,主要功能是突出显示关键字、字符串和变量等代码段。我需要一些关于如何实现程序的建议,我的一位朋友告诉我使用 2 个单独的线程,一个用于编辑,一个用于突出显示代码,但是如何在这 2 个线程之间建立通信?
如果我不使用单独的线程,它会对我的程序有什么影响吗?
我真的很困惑。请帮助我,提出一些建议。
编辑:还有一个问题我应该为此使用 JEditorPane 还是 JTextPane ?
使用单独的线程将是一种开销。在我看来,最好的方法是使用单个线程,一旦编辑文本,您就可以解析它并根据您的逻辑突出显示它。
但是,如果您热衷于拥有单独的线程,那么您可以创建一个单独的荧光笔线程[它将根据您的逻辑突出显示关键字],但是编辑后的文本必须由您的主线程传递给它,因此除非您的高亮逻辑非常复杂。
从文档
Swing 对象方法不是“线程安全的”:从多个线程调用它们有线程干扰或内存一致性错误的风险。
http://docs.oracle.com/javase/tutorial/uiswing/concurrency/dispatch.html