【发布时间】:2017-08-15 20:48:00
【问题描述】:
今天播放了数小时的视频后,我无法获取此内容。
Executer service、worker、task、并发包...??我对在哪里做什么感到困惑。
我想初始化几个在启动时向 UI 发送消息的对象。
我有一个界面:
public interface SystemMessage {
void postMessage(String outText);
}
我的一个对象和一些方法
public class Identity extends Service {
private String machineId = null;
private static SystemMessage systemMessage;
public Identity(SystemMessage smInterface){
systemMessage = smInterface;
//how do i run the identity class in the background and report to the UI?
// --------------------------------------------------
//
systemMessage.postMessage("Checking Machine Identity");
if (getStoredIdentity()){
systemMessage.postMessage("Machine ID exists.");
}
else{
systemMessage.postMessage("No Machine ID. Create New.");
machineId = createUuid();
storeIdentity();
}
}
}
// --------------------------------------------------
//
//Do I create individual tasks for each method in the class? do i use service, task, executer, or????
// --------------------------------------------------
//
private void storeIdentity(){
Properties p = new Properties();
p.setProperty("machineId", this.machineId);
try {
FileWriter file = new FileWriter("identity.properties");
p.store(file, "Identity");
systemMessage.postMessage("New Identity Created and Stored.");
} catch (IOException e) {
systemMessage.postMessage("Error Creating New Identity!");
e.printStackTrace();
}
}
在启动时初始化多个对象的我的主文件。
@Override
public void start(Stage primaryStage) throws Exception{
FXMLLoader loader = new FXMLLoader(getClass().getResource("fxml/entry.fxml"));
Parent root = loader.load();
mainController = (SystemMessage) loader.getController();
primaryStage.setTitle("ASI Sync!");
primaryStage.setScene(new Scene(root, 300, 275));
primaryStage.show();
initializeSync.start();
}
Thread initializeSync = new Thread (){
public void run(){
System.out.println("Thread Running");
Identity identity = new Identity(mainController);
Api api = new Api(mainController);
SqLite db = new SqLite(mainController);
}
};
【问题讨论】:
标签: java multithreading javafx