我正在使用来自https://github.com/iota-community/java-iota-workshop/blob/master/src/main/java/com/iota/ReadData.java的 ReadData 类从Iota 中检索消息通过散列值(bundlehash)缠结(本质上是一个分布式网络)。
这就是我的方法:
private String readMessageFromHash(String BundleHash) {
final String[] s = new String[]{""};
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
s[0] = ReadData.getTMessage(BundleHash);
} catch (Exception e) {
e.printStackTrace();
}
}
});
thread.start();
try {
thread.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
return s[0];
}
我需要下一行代码中的返回值,但没有多线程我的程序崩溃。使用多线程它有时可以工作,但大多数时候它不起作用(返回一个空字符串)。
我尝试使用:
thread.start();
try {
while(s[0].length < 1){}
thread.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
return s[0];
但它只是无限循环。
我认为问题在于我的程序等待网络响应的时间不够长。