0

我正在使用来自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];

但它只是无限循环。

我认为问题在于我的程序等待网络响应的时间不够长。

4

0 回答 0