開心生活站

位置:首頁 > IT科技 > 

java,mina

IT科技1.11W

<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進行最終的邏輯處理,在將結果過濾後返回給客戶端。

java mina

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;    }}

標籤:java mina