Java CountDownLatch 异步转同步的实现方法
来源:互联网 发布:mac brew install jdk 编辑:程序博客网 时间:2024/06/13 16:05
用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也可以实现异步转同步,但我还不太理解。
这个例子可以把异步的转成同步的:
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
- Java CountDownLatch 异步转同步的实现方法
- 多线程编程--异步转同步之CountDownLatch
- Java 异步方法转同步
- java实现异步转同步
- 理解同步与异步,及java中实现同步机制的方法
- java 总结几种线程异步转同步的方法
- java 总结几种线程异步转同步的方法
- java的同步方法异步处理
- (2.1.2.8)CountDownLatch之异步转同步
- java CountDownLatch 同步计数器
- JAVA同步转异步
- easyui的combotree同步树和异步树实现方法
- nodeJS实现方法的同步效果(去异步)
- java线程同步之CountDownLatch
- Java线程同步工具-CountDownLatch
- Java多线程--同步计数器CountDownLatch
- java 线程 CountDownLatch 同步工具
- Java多线程实现异步调用的方法
- 【小问题】js连接符,+;变量的保存。
- 有向图强连通分量 Tarjan算法【java实现】
- leetcode 之Maximum Depth of Binary Tree 用 C语言实现
- Android自定义View的实现方法,带你一步步深入了解View(四)
- 关于JVM的常见问题(一)
- Java CountDownLatch 异步转同步的实现方法
- SQL_自动生成党组织编码
- 235. Lowest Common Ancestor of a Binary Search Tree
- Cocos 资料大全 下载链接地址
- 嵌入式linux系统开发概述之六----图形用户界面(GUI)
- 腾讯力作!iOS 9 人机界面指南(5):图标与图形设计
- WordCount单词计数详解
- springmvc4.2.5+jackson2.7出现NoSuchMethodError问题
- ADFS 3.0登录页面不用输入域名的实现方法