作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个主类、另外两个类和一个线程。当线程完成执行时,该结果应该可用于所有三个类。所以基本上就像一个触发功能。什么解决方案可以解决这个问题?
最佳答案
一个有效的简单示例可能如下所示:
import java.util.ArrayList;
import java.util.Collection;
public class MainClass implements ResultReceiver {
public static void main(String[] args) {
SeparateThread separateThread = new SeparateThread();
separateThread.registerForResult(new MainClass());
separateThread.registerForResult(new OtherClass1());
separateThread.registerForResult(new OtherClass2());
separateThread.start();
}
@Override
public void receive(String result) {
System.out.println("MainClass.receive(\"" + result + "\")");
}
}
class SeparateThread extends Thread {
private static final Collection<ResultReceiver> receivers = new ArrayList<>();
public void registerForResult(ResultReceiver receiver) {
receivers.add(receiver);
}
@Override
public void run() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
String result = "Hello" + " " + "world";
for (ResultReceiver receiver : receivers) {
receiver.receive(result);
}
}
}
class OtherClass2 implements ResultReceiver {
@Override
public void receive(String result) {
System.out.println("OtherClass2.receive(\"" + result + "\")");
}
}
class OtherClass1 implements ResultReceiver {
@Override
public void receive(String result) {
System.out.println("OtherClass1.receive(\"" + result + "\")");
}
}
interface ResultReceiver {
void receive(String result);
}
然而,在大多数情况下,等待结果并在主线程中处理所有结果(更复杂的解决方案)更可靠。
关于java - 在不同类上使用线程生成的值的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28168396/
所以我有这个 UltraTicTacToe 游戏,我正在用 HTML/CSS/JS 编码。它由表中表中的表组成。当您单击 X 或 O 时,我想要突出显示您应该进入的下一个 TicTacToe 牌 ta
Some text Some more text 如何让每个 .example 的 .whatever 包含其 .test 的内容? 例如,如果代码是这样的: Som
我是一名优秀的程序员,十分优秀!