jack_a1SCS

  1.     public int getPoint() {
  2.         final int[] ll = new int[0];
  3.         Bukkit.getServer().getScheduler().runTaskAsynchronously(mcrmbplayerank.getProvidingPlugin(mcrmbplayerank.class), new Runnable(){
  4.             public void run() {
  5.                 ll[0] =PayApi.look(player.getName());
  6.             }
  7.         });
  8.        return ll[0];
  9.     }
复制代码



Jun_Ge_NB
NB的呀,这个人....................

jack_a1SCS
Jun_Ge_NB 发表于 2020-12-1 21:32
NB的呀,这个人....................

?大佬会吗?

天辉胡萝卜
本帖最后由 暮色胡萝卜 于 2020-12-2 01:27 编辑

异步任务返回值可以用CompletableFuture的thenApply,不过你程序段的写法要整体变

yumc
首先 你要明确 你的调用方是同步获取值还是异步
如果调用方只能同步 那么你这里异步也没啥意义
看样子你应该是要获取一个排行数据 然后通过PAPI展示出来?
推荐你设定一个缓冲区 (例如一个ConcurrentHashMap)
然后定期 或手动刷新到这个Map里
获调用方直接获取Map里面的数据
当然 你要缓存策略的话 你也可以用Caffeine Cache或者Guava Cache

Itsusinn
谷歌:java中的异步协调

jack_a1SCS
yumc 发表于 2020-12-2 11:45
首先 你要明确 你的调用方是同步获取值还是异步
如果调用方只能同步 那么你这里异步也没啥意义
看样子你应 ...

可以异步调用到hashmap里面吗,不会出现没有值的情况吗?

天辉胡萝卜
jack_a1SCS 发表于 2020-12-3 09:31
可以异步调用到hashmap里面吗,不会出现没有值的情况吗?

hashmap线程不安全

试试ConcurrentHashMap

第一页 上一页 下一页 最后一页