看了论坛的文章处理异步消息,想请问下一系统里同异步都有是如何使用MIMA框架?
http://hi.baidu.com/goosebaby/blog/item/c675ff2b4f474ef3e6cd40d3.html
上面是用了同步,但这样一来有不能收到异步消息了,请问有没有做到同时处理同异步的写法呢?谢谢~~
这个问题你最好先理解下什么叫异步,什么叫同步。
同步,可以理解为在执行完一个函数或方法之后,一直等待系统返回值或消息,这时程序是出于阻塞的,只有接收到返回的值或消息后才往下执行其他的命令。
异步,执行完函数或方法后,不必阻塞性地等待返回值或消息,只需要向系统委托一个异步过程,那么当系统接收到返回值或消息时,系统会自动触发委托的异步过程,从而完成一个完整的流程。
异步框架同样可以完整同步框架所完成的功能,你可以在Mina的session中设置一个listener来监视超时的问题。
什么叫同时处理同异步的写法
试试[code="java"]ConnectFuture f=connector.connect(new InetSocketAddress("localhost",8000));
f.awaitUninterruptibly();
f.getSession().getConfig().setUseReadOperation(true);
[/code]
如果不设置,直接read会
[code="java"]Exception in thread "main" java.lang.IllegalStateException: useReadOperation is not enabled.
at org.apache.mina.core.session.AbstractIoSession.read(AbstractIoSession.java:264)[/code]