-
MINA服务端多线程问题3
服务器是使用MINA做的,处理一些数据
客户端也是使用MINA,在服务端出现冲突和阻塞,有时两个线程可以正常运行,有时一个运行另一个阻塞。
MINA 不是多线程的吗?为什么会阻塞。求解答
public class testClient { public static void main(String[] args){ new Thread(new ddzx()).start(); new Thread(new ddzx2()).start(); } } class ddzx implements Runnable{ @Override public void run() { //创建 tcp/ip 连接 NioSocketConnector connector = new NioSocketConnector(); //创建接收数据的过滤器 DefaultIoFilterChainBuilder chin = connector.getFilterChain(); //设定这个过滤器将一行一行的读取数据 //chin.addLast("codec", new IoFilterAdapter()); chin.addLast("mychin", new ProtocolCodecFilter(new ObjectSerializationCodecFactory())); //设定客户端消息处理器 connector.setHandler(new clientHandler()); //设置连接超时时间 connector.setConnectTimeout(30); //连接到服务器 //ConnectFuture future = connector.connect(new InetSocketAddress("192.168.2.201",31024)); ConnectFuture future = connector.connect(new InetSocketAddress("127.0.0.1",9988)); future.awaitUninterruptibly(); future.getSession().getCloseFuture().awaitUninterruptibly(); connector.dispose(); } } class ddzx2 implements Runnable{ @Override public void run() { //创建 tcp/ip 连接 NioSocketConnector connector = new NioSocketConnector(); //创建接收数据的过滤器 DefaultIoFilterChainBuilder chin = connector.getFilterChain(); //设定这个过滤器将一行一行的读取数据 //chin.addLast("codec", new IoFilterAdapter()); chin.addLast("mychin", new ProtocolCodecFilter(new ObjectSerializationCodecFactory())); //设定客户端消息处理器 connector.setHandler(new clientHandler2()); //设置连接超时时间 connector.setConnectTimeout(30); //连接到服务器 //ConnectFuture future = connector.connect(new InetSocketAddress("192.168.2.201",31024)); ConnectFuture future = connector.connect(new InetSocketAddress("127.0.0.1",9988)); future.awaitUninterruptibly(); future.getSession().getCloseFuture().awaitUninterruptibly(); connector.dispose(); } }
2012年5月08日 12:34
目前还没有答案
相关推荐
- MINA服务端的核心组件是Acceptor,它负责监听指定的端口,当有新的客户端连接请求时,Acceptor会创建一个新的Session来处理这个连接。 - Session是MINA中的关键概念,代表一个与客户端的连接。它包含了与连接...
在这个"Mina服务端客户端示例程序"中,我们可能找到了一系列用于展示如何使用Mina框架搭建服务端和客户端的代码示例。下面我们将深入探讨Mina的核心概念以及如何通过这些示例进行学习和实践。 1. **非阻塞I/O**:...
根据给定的信息,我们可以从标题“mina多线程”、描述“mina java多线程开发框架 NIO”以及部分给出的内容中提炼出一系列与Mina框架相关的知识点。 ### Mina框架简介 Mina(Multipurpose Infrastructure Networked...
在这个“Mina服务端例子”中,我们主要探讨的是如何使用Mina框架来实现一个基于Socket的非阻塞I/O(NIO)服务端。 1. **Mina框架介绍**: Mina提供了事件驱动和异步处理模型,使得开发者可以专注于业务逻辑,而...
《mina mmorpg服务端源码解析》 在游戏开发领域,尤其是大型多人在线角色扮演游戏(MMORPG)的设计与实现中,服务端源码扮演着至关重要的角色。"mina mmorpg服务端源码"是一个专注于游戏服务器端开发的项目,其核心...
1. 创建一个`IoAcceptor`实例,它是MINA服务端的核心组件,用于监听客户端的连接请求。通常我们会选择`NioSocketAcceptor`,因为它基于Java NIO实现。 2. 定义一个`ProtocolDecoder`和`ProtocolEncoder`,用于解码...
5. **线程模型**:MINA支持多线程模型,可以配置为单线程、多线程或者工作线程池模式,以适应不同场景下的性能需求。 6. **异常处理**:MINA提供了完善的异常处理机制,可以在Handler中捕获并处理各种网络异常,如...
例如,它使用NIO(非阻塞I/O)来提高并发处理能力,避免了线程阻塞的问题。此外,通过缓冲区管理和零拷贝技术,Mina能够有效地减少CPU的使用和内存的消耗。 总的来说,理解和处理Mina中的断包和粘包问题,需要深入...
在Java开发中,Mina(Java Minimal ...在实际应用中,可能还需要考虑异常处理、心跳机制、多线程处理、消息序列化与反序列化等问题。Mina提供的API非常灵活,可以根据需求进行扩展和定制,以满足更复杂的应用场景。
**使用mina实现CMPP2.0服务端的关键点** 1. **连接管理**:使用Mina的Acceptor来监听特定端口,接受来自移动网关的连接请求。每个连接通常对应一个独立的工作线程,处理来自客户端的CMPP请求。 2. **会话建立**:...
这里可以设置端口号、传输类型(如NIO或EPOLL)、线程模型等参数。 ```java @Configuration public class MinaServerConfig { @Value("${mina.server.port}") private int port; @Bean public ...
1. **MINA服务端**:在MINA中,服务端通常被称为Acceptor。它负责监听指定的网络端口,接收客户端的连接请求,并为每个连接创建一个Session。Session是MINA的核心概念,它代表了服务端与客户端之间的一个连接实例。...
6. **并发编程**:由于服务端可能同时处理多个连接,了解Java多线程和并发控制机制,如synchronized关键字、锁和并发容器,以及如何在Mina框架中应用这些概念。 7. **日志和调试**:熟悉如何集成和使用日志框架(如...
通过多线程模型和缓冲区管理,MINA能有效减少系统资源消耗,提升服务端处理能力。 8. **安全性**:MINA支持SSL/TLS加密,可以保护传输数据的安全。在实际应用中,确保数据传输安全是必不可少的,尤其是在涉及敏感...
- 分析了从传统的阻塞式服务器到多线程阻塞服务器,再到基于NIO的非阻塞服务器的演变过程,以及多线程的NIO服务器的实现方式。 - 强调了NIO相对于传统IO的优势,如更高的并发能力和更低的资源消耗。 ##### 3.2 异步...
非阻塞I/O允许一个线程处理多个连接,提高系统资源利用率,特别适合高并发场景。 标签“UDP”和“MINA2”进一步强调了这个示例的关键技术点。UDP是一种无连接的、不可靠的传输层协议,它比TCP(传输控制协议)更轻...
1. 数据进入mina服务端,首先经过IoFilter链。 2. 在解码过滤器中,数据被分割成多个“消息”单元,每个消息对应一个连接。 3. 消息被传递给相应的解码器进行解码,解码器根据协议解析出有意义的信息。 4. 解码后的...
在Android上运行服务端程序面临一些挑战,如资源限制、多线程管理以及后台服务的生命周期管理。MinaServer通过优化内存管理和线程模型,能在各种Android设备上稳定运行,包括三星平板、小米手机、华为手机、三星手机...
- 创建MINA服务端和客户端:服务端负责接收和分发数据,客户端用于发起连接并发送/接收数据。 3. **解决中文乱码问题** - 数据编码:确保服务端和客户端都使用相同的字符集进行编码和解码,例如UTF-8。在MINA的...
需要注意的是,由于Android平台的限制,需要适配多线程和网络访问策略。 6. **Demo学习要点** - 分析服务端和客户端的启动与监听过程,理解如何创建IoAcceptor和IoConnector。 - 研究数据的编码和解码过程,熟悉...