java 怎么去实现异步通信 java 怎么去实现异步通信?启动一个主线程,A线程发送数据,B线程接受数据,当B线程收到数据返回给主线程接受。怎么去实现?类似与android的handler机制 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 public interface Future<V>Future 表示异步计算的结果。它提供了检查计算是否完成的方法,以等待计算的完成,并获取计算的结果。计算完成后只能使用 get 方法来获取结果,如有必要,计算完成前可以阻塞此方法。取消则由 cancel 方法来执行。还提供了其他方法,以确定任务是正常完成还是被取消了。一旦计算完成,就不能再取消计算。如果为了可取消性而使用 Future 但又不提供可用的结果,则可以声明 Future<?> 形式类型、并返回 null 作为底层任务的结果。 future好像不能主动的去中断 我想起了linux的信号机制查了一下java的实现http://blog.csdn.net/raintungli/article/details/7178472 你这个需求,如果只是两个线程轮流给对方发消息的话,共享一个用于存放消息的对象,然后用wait/notify都可以解决问题了。 实现的是一个异步登录。点击登录,启动线程A,调用线程B发送数据给服务器,线程C接受服务器返回的数据,数据处理完成后,提交给线程A. 模型显得太复杂了,既然涉及到服务器间通讯,不如就直接用消息队列去简化它:A --JMS--> C 基本上就完毕了,JMS很轻量级的。但这种需要整个模型基于异步通讯模式,如果不调整浏览器实现,会面临回调消息的投递问题。另一种是为了提供同步转异步的场合,会复杂些,这种场合需要有人负责将Web来胡同步调用转为异步调用。那么确实会引入B,B负责将请求消息投递给JMS,并负责监听JMS中的返回消息,大致系统流模型类似于:0、Bcatch将自己注册到JMS,作为回调消息队列的监听者;1、A生成请求消息对象,比如:voMsg2、A将voMsg放入JVM内部消息池,比如:lstQueue3、A对voMsg执行wait(),阻塞自己4、Bthow从lstQueue中取出消息,生成唯一消息标示msgID(A负责生成也行),将其存入Map<msgID, voMsg>中,然后投递给JMS的请求消息队列;5、C(另一台服务器)作为监听器从JMS的请求消息队列中得到请求,执行,将结果投递到JMS的回调消息队列;6、JMS的回调消息队列触发Bcatch监听器;7、Bcatch从回调消息取得msgID,从Map中取出voMsg,然后将回调消息的结果信息加入voMsg中,对其执行notify();8、A从voMsg的wait()中被唤醒,继续执行。 jms木有接触过。不过相对于应用来说,jms算是一个庞大的东西了。现在问题已经解决了。观察者模式可以解决两个线程之间的通信问题。 java POI操作excel,不支持linux? java的抽象类 为什么这条语句多打印出四行? 面试挺难的(多选题) java中换行符号的使用 hashCode()的作用 100分求老侯的java思想下半部分。 jar 求救Socket问题,有些地方不是很理解,请指教 急急!! 谁解决我的 swing 中文显示问题,我加倍给分(注意:共有两贴) 关于对象多态性,不太理解 悬赏贴 音乐频谱
查了一下java的实现http://blog.csdn.net/raintungli/article/details/7178472
A --JMS--> C
基本上就完毕了,JMS很轻量级的。
但这种需要整个模型基于异步通讯模式,如果不调整浏览器实现,会面临回调消息的投递问题。
另一种是为了提供同步转异步的场合,会复杂些,这种场合需要有人负责将Web来胡同步调用转为异步调用。
那么确实会引入B,B负责将请求消息投递给JMS,并负责监听JMS中的返回消息,大致系统流模型类似于:
0、Bcatch将自己注册到JMS,作为回调消息队列的监听者;
1、A生成请求消息对象,比如:voMsg
2、A将voMsg放入JVM内部消息池,比如:lstQueue
3、A对voMsg执行wait(),阻塞自己
4、Bthow从lstQueue中取出消息,生成唯一消息标示msgID(A负责生成也行),将其存入Map<msgID, voMsg>中,然后投递给JMS的请求消息队列;
5、C(另一台服务器)作为监听器从JMS的请求消息队列中得到请求,执行,将结果投递到JMS的回调消息队列;
6、JMS的回调消息队列触发Bcatch监听器;
7、Bcatch从回调消息取得msgID,从Map中取出voMsg,然后将回调消息的结果信息加入voMsg中,对其执行notify();
8、A从voMsg的wait()中被唤醒,继续执行。