gpt4 book ai didi

java - 将native方法定义为public native synchronized int doSum(int a, int b)对吗?

转载 作者:行者123 更新时间:2023-11-28 07:44:31 24 4
gpt4 key购买 nike

我对多线程环境下的 JNI 实现感到困惑。我有一个如下所示的 java 类,代表 native 接口(interface):

public class Test {
public native int doSum(int a, int b);
}

并在c中实现了相应的native方法。

现在,我的问题是,我有多个线程,比如 5 个,并且所有线程都使用上述类 Test 的一个全局实例。那么,用 C 编写的 native 方法代码是否有可能是线程安全的?或者我是否需要像问题中提到的那样使其成为线程安全的?

如果我为每个线程创建单独的 Test 类实例,然后调用 native 函数怎么办?这会是线程安全的吗?

谢谢。

最佳答案

Is it right to define native method as public native synchronized int doSum(int a, int b)?

如果你希望它是一个接受两个整数参数并返回一个整数结果的同步方法,那就对了。只有你自己知道。

So, is it possible that the native method code, written in C, will be thread safe?

如果以这种方式实现,这是可能的。没有看到代码就不可能说。

OR do do I need to make it thread safe like mentioned in the question?

如果它的实现还不是线程安全的并且您的使用模式要求它是线程安全的,则您需要使其成为线程安全的。这不是一个真正的问题。

关于java - 将native方法定义为public native synchronized int doSum(int a, int b)对吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15152832/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com