【发布时间】:2018-11-01 16:54:33
【问题描述】:
我在从新线程访问主线程中的数据时遇到问题。只需使用主类 getter/setter,我就可以在不使用线程的情况下很好地做到这一点。但是当我尝试启动一个新线程时,我不能再这样做了。
主类:
public class Driver extends Application{
//create socket handlers
Runnable myNewThread = new workerThread();
//variables
private String lastMessage = "";
//getters and setters
public String setMyVariable() {
this.MyVariable = MyVariable;
}
//main
public static void main(String[] args) {
//launch threads
new Thread(myNewThread).start();
}
NewThread 类:
public class workerThread implements Runnable{
public void run() {
Driver.setMyVariable("test");
}
我在workerThread 类中收到错误“无法解析符号'setMyVariable'”。据我所知,这是因为我的 workerThread 线程不知道要引用 Driver 的哪个实例(只有一个实例,但它不知道)。有人可以帮助我了解我所缺少的吗?我已经看到在主类的函数中声明新类的示例,但为了代码组织的利益,我试图避免这种情况,因为我的工作线程会有点大。
【问题讨论】:
-
驱动是如何定义的?
-
@jspcal 只是在第一段代码中定义为一个类。它没有在 workerThread 中定义。也许我需要以某种方式?
-
public String setMyVariable()如果你想调用你调用的方式,这个方法应该是静态的。 stackoverflow.com/questions/21204589/… -
我猜你是在学走路之前尝试跑步。恕我直言,在尝试使用线程之前,您应该学习 Java 的基本概念。
-
你为什么有
new workerThread(this.getClass());?你可以只传递this,这是你类的一个实例。getClass获取基类。这扩展了Application,这是一个 javafx 应用程序吗?
标签: java multithreading