【发布时间】:2019-02-24 02:05:01
【问题描述】:
我很抱歉写了一大堆代码,但找不到词来解释我的问题。
问题:
GameHandler 创建 GameData 对象并将 this 作为 ITraceble 传递。
GameData 对象具有 ITraceable 对象的引用。 GameTask 实现了Runnable,因此它将在不同的线程上运行。但是当我尝试从GameTask 内部的任何地方调用m_gameData.traceMeNow() 时,我得到m_game.m_traceable 为空。
public interface ITraceable {
public void trace(String a_args);
}
public class GameData {
ITraceable m_traceable;
public GameData(ITraceable a_traceable) {
m_traceable = a_traceable;
}
public void traceMeNow() {
m_traceable.trace("something to trace"); <----- m_traceable ref is NULL.
}
}
public class GameTask implements Runnable {
GameData m_gameData;
public GameTask(GameData a_gameData) {
m_gameData = a_gameData;
m_gameData.traceMeNow(); <---Function call from here
}
public void run() {
//something here
}
}
class GameHandler implements ITraceable {
public void trace(String a_args) {
//writting some logs here.
}
public void createObjects() { < ------ Creating objects here
GameData l_gameData = new GameData(this);
GameTask l_gameTask = new GameTask(l_gameData);
//--- Starting GameTask in other Thread ----//
}
}
【问题讨论】:
-
l_gameTask 何时以及如何启动?
标签: java multithreading