【发布时间】:2026-02-07 20:25:01
【问题描述】:
我觉得这可能是一个愚蠢的问题,但我对听众的经验并不丰富......无论如何,我有一个关于线程和听众的问题;考虑一下这段代码(可能在语法上不正确,这样做是出于我的想法):
public class Stuff {
private SimpleLongProperty time = new LongProperty(this, "time");
private Executor execute;
public Stuff(Clock clock) {
time.bind(clock.getValue);
execute = Executors.newFixedThreadPool(5);
}
public void someAction() {
for(int i = 0; i < 5; i++) {
execute.execute(scheduleTask());
}
}
public Runnable scheduleTask() {
time.addListener((obs, oldV, newV) -> {
//Code here
});
}
}
当调用 someAction() 并调用 scheduleTask() 5 次以添加 5 个侦听器时,每个侦听器会在时间更新时在自己的线程中执行代码吗?还是会在主线程中执行代码,因为那是时间所在?
【问题讨论】:
-
监听器将从调用它们的线程上下文中调用(在这种情况下为执行器线程)
-
“代码可能在语法上不正确,这是我的头顶上的事情” - 下次当您提供可以编译的语法正确的最小示例时,您可能会得到更多答案。
-
@J-Alex JUnit 成功案例!
-
作为答案发布(不是对问题的编辑)并接受它。
标签: java multithreading listener