- public int getPoint() {
- final int[] ll = new int[0];
- Bukkit.getServer().getScheduler().runTaskAsynchronously(mcrmbplayerank.getProvidingPlugin(mcrmbplayerank.class), new Runnable(){
- public void run() {
- ll[0] =PayApi.look(player.getName());
- }
- });
- return ll[0];
- }
NB的呀,这个人....................
Jun_Ge_NB 发表于 2020-12-1 21:32
NB的呀,这个人....................
?大佬会吗?
本帖最后由 暮色胡萝卜 于 2020-12-2 01:27 编辑
异步任务返回值可以用CompletableFuture的thenApply,不过你程序段的写法要整体变
异步任务返回值可以用CompletableFuture的thenApply,不过你程序段的写法要整体变
首先 你要明确 你的调用方是同步获取值还是异步
如果调用方只能同步 那么你这里异步也没啥意义
看样子你应该是要获取一个排行数据 然后通过PAPI展示出来?
推荐你设定一个缓冲区 (例如一个ConcurrentHashMap)
然后定期 或手动刷新到这个Map里
获调用方直接获取Map里面的数据
当然 你要缓存策略的话 你也可以用Caffeine Cache或者Guava Cache
如果调用方只能同步 那么你这里异步也没啥意义
看样子你应该是要获取一个排行数据 然后通过PAPI展示出来?
推荐你设定一个缓冲区 (例如一个ConcurrentHashMap)
然后定期 或手动刷新到这个Map里
获调用方直接获取Map里面的数据
当然 你要缓存策略的话 你也可以用Caffeine Cache或者Guava Cache
谷歌:java中的异步协调
yumc 发表于 2020-12-2 11:45
首先 你要明确 你的调用方是同步获取值还是异步
如果调用方只能同步 那么你这里异步也没啥意义
看样子你应 ...
可以异步调用到hashmap里面吗,不会出现没有值的情况吗?