java - mina
<link rel="stylesheet" href="https://js.how234.com/third-party/SyntaxHighlighter/shCoreDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><script type="text/javascript"> SyntaxHighlighter.all(); </script>
java mina是什麼,讓我們一起了解一下?
MINA 是一個網絡應用框架,有助於用户非常方便地開發高性能、高伸縮性的網絡應用,通過Java NIO提供了一個抽象的、事件驅動的、異步的位於各種傳輸協議之上的API,MINA通常可被稱之為NIO框架庫。
mina的工作流程是怎樣的?
當遠程客户機首次訪問採用Mina編寫的程序時,IOAcceptor作為線程運行,負責接收來自客户的請求。當有客户請求連接時,創建一個IoSession,該IoSession與IoProcessor,SocketChannel與IoService聯繫起來。
IoProcessor作為另一個線程運行,定時檢查客户是否有數據到來,並對客户請求進行處理,一次調用IoService中註冊的各個Filter,最後調用IoHandler進行最終的邏輯處理,在將結果過濾後返回給客户端。
mina線程產生:
1、當 IoAcceptor/IoConnector實例創建的時候,同時一個關聯在IoAcceptor/IoConnector上的IoProcessor線程池也被創建。
2、當IoAcceptor/IoConnector建立套接字(IoAcceptor 的bind()或者是IoConnector 。
的connect()方法被調用)時,從線程池中取出一個線程,監聽套接字端口。
3、當 IoAcceptor/IoConnector監聽到套接字上有連接請求時,建立IoSession 。
對象,從IoProcessor池中取出一個IoProcessor線程執行IO處理。
4、如若過濾器中配置了“threadPool”過濾器,則使用此線程池建立線程執行業務邏輯(IoHandler)處理,否則使用IoProcessor線程處理業務邏輯。
具體代碼展示:
public class SocketCodecFactory implements ProtocolCodecFactory { private final SocketDecode decoder; private final SocketEncode encoder; public SocketCodecFactory() { decoder = new SocketDecode(); encoder = new SocketEncode(); } @Override public ProtocolDecoder getDecoder(IoSession session) throws Exception { return decoder; } @Override public ProtocolEncoder getEncoder(IoSession session) throws Exception { return encoder; }}