Java异步转同步的实现方法 -问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Java异步转同步的实现方法

2016-02-27 14:53:41 4833 1

用Java调用一个异步方法时,方法会马上返回,而结果会在之后再去取
例如:

public void invoke(Runnable task) {
    threadPool.execute(task);
}

//或者

public <T> Future<T> submit(Callable<T> task) {
    return threadPool.submit(task);
}

以上方法都是异步的,对于需要得到返回结果的,可以通过future.get()来取得结果。
我的问题是:
如果一个方法一开始是异步的,我想把它转成同步来用,应该做哪些修改,或者是添加哪些类和逻辑?
Java中的异步转同步有没有哪些一般的编程模式?据说用CountDownLatch也可以实现异步转同步,但我还不太理解。
等待各位解答,先谢谢!

取消 提交回答
全部回答(1)
  • 蛮大人123
    2019-07-17 18:48:53
    public synchronized TIMMessage queryLatestMessage(TIMConversation conversation) throws InterruptedException {
            final CountDownLatch latch = new CountDownLatch(1);
            final List<TIMMessage> typeMessages = new ArrayList<>();
            conversation.getMessage(1, null, new TIMValueCallBack<List<TIMMessage>>() {
                @Override
                public void onError(int code, String desc) {
                    latch.countDown();
                }
    
    
    
                @Override
                public void onSuccess(List<TIMMessage> msgs) {
                    TIMMessage msg0 = null;
                    if (msgs.size() < 1) {
                        return;
                    }
                    for (TIMMessage msg : msgs) {
                        if (msg.status() != TIMMessageStatus.HasDeleted) {
                            typeMessages.add(msg);
                            break;
                        }
                    }
                    latch.countDown();
                }
            });
            latch.await();
            if (typeMessages.size() > 0) {
                return typeMessages.get(0);
            } else {
                return null;
            }
        }
    0 0
相关问答

1

回答

JAVA中方法是什么?

2022-04-02 23:35:54 532浏览量 回答数 1

1

回答

java中的方法是什么?

2022-04-02 16:15:58 241浏览量 回答数 1

1

回答

在java中int转String的性能最优的方法是什么?

2021-11-06 20:32:59 177浏览量 回答数 1

0

回答

请问在java中int转String的性能最优的方法是什么?

2021-11-07 00:18:07 121浏览量 回答数 0

0

回答

请问java中使用AES加密文件中的内容速度很慢,导致加密性能较低,该如何优化?

2021-11-06 23:37:35 149浏览量 回答数 0

0

回答

请问在java中实例变量与局部变量哪个性能更优呢,选择的原理是什么?

2021-11-06 23:49:19 92浏览量 回答数 0

0

回答

请问在java中不同的架构是如何影响java应用系统的性能的,主要体现在哪些方面呢?

2021-11-06 23:49:25 86浏览量 回答数 0

0

回答

请问在java中ArrayList和 LinkedList哪个性能更优,该如何选择?

2021-11-06 23:50:30 94浏览量 回答数 0

0

回答

请问java中创建一个新的线程性能开销会有多大,原因是什么?

2021-11-06 23:51:45 93浏览量 回答数 0

0

回答

请问java线程性能问题:如何最小化Java线程上下文切换产生的性能开销?

2021-11-06 23:51:47 83浏览量 回答数 0
+关注
蛮大人123
我说我不帅他们就打我,还说我虚伪
0
文章
7733
问答
问答排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载