如何在rust函数的java调用中使用async-await同步[已关闭]

bttbmeg0  于 2023-03-06  发布在  Java
关注(0)|答案(1)|浏览(141)

已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题?**添加详细信息并通过editing this post阐明问题。

昨天关门了。
Improve this question
我正在进行一个java-rust项目,在这个项目中我使用rust中的j 4 rs crate来翻译rust函数,使它们可以通过java接口使用。This repo包含了一些使用j 4 rs的初学者示例代码,我将其用作模板。
我的rust项目涉及到向服务器发送HTTP请求的异步函数,我需要在java语言接口中使用它。我应该如何继续为我的java调用添加wait synchronization到rust函数?
下面是发送HTTP请求的rust函数:

#[call_from_java("io.github.astonbitecode.j4rs.example.RustSimpleFunctionCall.fnnoargs")]
async fn my_function_with_no_args() {
    let response = reqwest::get("http://127.0.0.1:8081").await;
}

这里是j 4 rs的github存储库供参考。

j9per5c4

j9per5c41#

call_from_java注解的函数实际上是由Java线程调用的JNI函数。
我假设,如果您想在Rust端进行异步调用,在Java线程调用函数之后,您应该使用例如时雄来生成任务,就像您从主(而不是async)函数中所做的那样。
下面是有关如何桥接异步/非异步代码的一些详细信息:https://tokio.rs/tokio/topics/bridging
在Java方面,我不确定JNI支持多少异步...

相关问题