如何将对象从主线程传递到java中的另一个线程

Sur*_*dhi 5 java multithreading nullpointerexception

在我的主应用程序类中,我有一个JTextArea的对象(比如txtArea).我在main_application程序中创建了另外两个线程.我创建的两个线程是用于在串行端口中读写.现在我想将串口读缓冲区数据放入JTextArea对象.所以我需要将在main_application中创建的JTextArea对象传递给read-thread,以便read-thread可以将读取输出放到JTextArea中.

但是这样做后我面临空指针访问问题.当我检查main_application中的JTextArea对象时它不是null但是在传递给线程后我检查了它的null.我不知道它是怎么发生的......如果有任何极客可以帮助我,我会很高兴....

谢谢,Surjya

Joh*_*ett 1

在线程之间共享对象可能会变得非常混乱,您可能需要阅读有关Actor 模型的不同方法。特别是在 GUI 领域,模型-视图-控制器方法代码可以提供帮助。

但回到问题上来,您可以通过将 JTextArea 设为静态变量并让所有不同的线程随意修改静态实例来快速破解它:

public static JTextArea TXTAREA

void main_application(){
    //set up app
    ...
    TXTAREA = new JTextArea()
    ...
}
Run Code Online (Sandbox Code Playgroud)

然后在串行读取线程中,设置 的文本TXTAREA。这个解决方案并不理想,我认为更好的方法是使用 MVC 方法并有一个控制器接受要放入文本区域的值。