gpt4 book ai didi

从另一个线程调用的Java方法,数据更新不是即时的

转载 作者:行者123 更新时间:2023-11-29 08:59:29 25 4
gpt4 key购买 nike

我正在尝试使用单独的线程在 Java 中执行嵌套的 for 循环(以避免卡住 UI,并使事情更简单):

public class scan2D extends Thread{
public void run(){
float data;
for (int y = 0; y<GUI.max_y; y++) {
for (int x = 0; x<GUI.max_x; x++) {
GUI.model.set(GUI.edaq.getdata());
}
}
GUI.model.save();
}
}

scan2d 对象在 GUI 对象中创建,并通过按下 GUI 的启动按钮启动。一切正常,除了“模型”对象只更新一次,最后由所有数据更新,而不是一个一个地更新。我希望在从“edaq”读取数据并发送到模型后立即更新它。模型由 View 观察。如何使更新即时进行?

更新感谢您提供的所有帮助建议和评论!抱歉,我没有包括所有明显导致问题的代码。我是初学者。我做了一个简化的、最小的“工作”示例,它也显示了症状:

package test;

public class GUI {
static Model model;
static scan2D scan2d;
public GUI() {
model = new Model();
scan2d = new scan2D();
scan2d.start();
}
public static void main(String[] args) {
new GUI();
}
}

class Model {
public void set(int data)
{
System.out.print(data);
}
}

public class scan2D extends Thread {
public void run(){
int data;
for (int y = 0; y<=10; y++) {
for (int x = 0; x<=10; x++) {
try {Thread.sleep(100);}
catch(InterruptedException ex){}
GUI.model.set(x+y);
}
}
}
}

当我以 100 毫秒的延迟进行尝试时,我同时获得了最后显示在 netbeans 输出窗口中的所有数据。当我使用 1000s 时,它起作用了,数据在输出中一个接一个地显示。仅仅是显示问题吗?

最佳答案

在您的情况下,您应该在每次数据更改时启动新线程(也就是执行您的 run 方法)。我只能猜测,在对模型进行所有更改之后,您只会启动一次新线程。我说得对吗?

关于从另一个线程调用的Java方法,数据更新不是即时的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18344619/

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