gpt4 book ai didi

java - 多线程访问的静态方法,Java

转载 作者:行者123 更新时间:2023-11-30 05:59:50 26 4
gpt4 key购买 nike

我正在使用第三方库对 7 张牌扑克牌进行牌局评估。这个库中的方法evaluate被声明为公共(public)静态,我相信它改变了类中的一些全局静态数组。我遇到的问题是,当我正在做一个大约 10m 枚举的枚举算法时,我想将其并行化,因此我创建了 FutureTasks,每个任务评估 10m 评估的一小部分。我收到的错误是:

java.util.concurrent.ExecutionException: java.lang.ArrayIndexOutOfBoundsException: -2147483648
at java.util.concurrent.FutureTask$Sync.innerGet(Unknown Source)
at java.util.concurrent.FutureTask.get(Unknown Source)

根据我从 Google 搜索中收集到的信息,这是在尝试检索因引发异常而中止的任务的结果时引起的。

是否有某种方法可以使此静态方法线程安全,例如每个线程都为正在编辑的全局静态数组创建自己的副本?

谢谢

最佳答案

可以为每个线程在单独的ClassLoader中加载库,以确保每个类都有自己的类集,因此也有自己的静态变量集。

但是,如果这样做,则必须小心确保这些类加载器的父类加载器无法访问该库。

关于java - 多线程访问的静态方法,Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2387207/

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