gpt4 book ai didi

java - 无法通过类中的 Runnable 访问全局变量

转载 作者:行者123 更新时间:2023-12-01 13:31:33 26 4
gpt4 key购买 nike

美好的一天,

我有一个名为 FunctionHandler 的类,其中包含一个名为评估的方法,如下所示:

class FunctionHandler{
Object globalVar;

public void Evaluate(){
ThreadPool pool;

Runnable task = new Runnable(){
public void run() { aWorkerTask(globalVar); }
}


pool.start(task);
pool.stop();
}

public void aWorkerTask(Object object){//worker stuff}
}

问题是,我的 Runnable 对象似乎无法访问 globalVar!它似乎是它自己的对象,无法引用其类内部的内容。周围还有吗?

问题是这段代码本质上不起作用。 Runnable 无法访问 globaVar。我需要将 aWorkerTask 包装在 Runnable 中,并且它需要访问 globalVar

最佳答案

我不确定这是否是最好的实现,但我所做的是创建一个实现 Runnable 的类:

public class MyRunnable implements Runnable {
private FunctionHandler functionHandler; //Global Reference - Only reading from it
private Object globalVar;

public MyRunnable(FunctionsHandler functionsHandler,Object globalVar) {
this.functionsHandler = functionsHandler;
this.globalVar = globalVar;
}

public void run(){
functionHandler.aWorkerTask(globalVar)
}
}

并传入主对象functionHandler,其中包含我需要制作为Runnable的函数。然后我创建一个可运行的文件:

MyRunnable taskProcessor = new MyRunnable(this,variableName,functionValues,jobNum.toString());
threadPool.runTask(taskProcessor);

关于java - 无法通过类中的 Runnable 访问全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21535608/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com