需要为使用swing的java代码编辑器提供建议吗

需要为使用swing的java代码编辑器提供建议吗,java,multithreading,swing,Java,Multithreading,Swing,我计划使用Swing编写一个java代码编辑器,其主要功能是突出显示代码段,如关键字、字符串和变量。我需要一些关于如何实现程序的建议,我的一个朋友告诉我使用两个单独的线程,一个用于编辑,一个用于突出显示代码,但是如何在这两个线程之间建立通信 如果我不使用单独的线程,它会对我的程序产生任何影响吗 我真的很困惑。请帮我提些建议 编辑:还有一个问题,我应该为此使用JEditorPane还是JTextPane?使用单独的线程会增加开销。 在我看来,最好的方法是使用一个线程,一旦文本被编辑,你们就可以解析

我计划使用Swing编写一个java代码编辑器,其主要功能是突出显示代码段,如关键字、字符串和变量。我需要一些关于如何实现程序的建议,我的一个朋友告诉我使用两个单独的线程,一个用于编辑,一个用于突出显示代码,但是如何在这两个线程之间建立通信

如果我不使用单独的线程,它会对我的程序产生任何影响吗

我真的很困惑。请帮我提些建议


编辑:还有一个问题,我应该为此使用JEditorPane还是JTextPane?

使用单独的线程会增加开销。 在我看来,最好的方法是使用一个线程,一旦文本被编辑,你们就可以解析它并根据你们的逻辑突出显示它


但是如果你想拥有单独的线程,那么你可以创建一个单独的高亮线程[根据你的逻辑高亮显示关键字],但是编辑后的文本必须由你的主线程传递给它,因此除非高亮显示逻辑非常复杂,否则不会有太多收益。

来自文档

Swing对象方法不是“线程安全的”:从 多线程存在线程干扰或内存一致性风险 错误


如果我没记错的话,swing的大部分都不是线程安全的。。。。还是这样吗?我想是的,这就是为什么他们使用SwingUtilities,invokeLater()fnI会建议aginst在swing中尝试这个,没有理由。我认为一个更好的途径是作为一个web应用程序,这样你可以快速地迭代它并获得很多追随者,有点像collabedit或cloud9,但是是java特定的。另请参阅答案,以获得关于特定元素的一些帮助,即语法突出显示和自动建议只是想知道。。。有没有一种方法我不必传递文本,比如有一个公共类??必须有一种方法让highlighter线程知道哪些文本被编辑过,所以如果你想看到文本动态高亮显示,你应该传递它[最好的方法是阻塞队列]。否则你可以有一个爬行的背景线程,可以在背景中解析文本[基于某些逻辑]并突出显示文本。正如你所说的,这看起来会让事情变得更糟。看来我不得不放弃这个程序的多线程思想。