0 0

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 服务端和客户端demo

    - MINA服务端的核心组件是Acceptor,它负责监听指定的端口,当有新的客户端连接请求时,Acceptor会创建一个新的Session来处理这个连接。 - Session是MINA中的关键概念,代表一个与客户端的连接。它包含了与连接...

    Mina 服务端客户端示例程序

    在这个"Mina服务端客户端示例程序"中,我们可能找到了一系列用于展示如何使用Mina框架搭建服务端和客户端的代码示例。下面我们将深入探讨Mina的核心概念以及如何通过这些示例进行学习和实践。 1. **非阻塞I/O**:...

    mina服务端例子

    在这个“Mina服务端例子”中,我们主要探讨的是如何使用Mina框架来实现一个基于Socket的非阻塞I/O(NIO)服务端。 1. **Mina框架介绍**: Mina提供了事件驱动和异步处理模型,使得开发者可以专注于业务逻辑,而...

    mina mmorpg服务端源码

    《mina mmorpg服务端源码解析》 在游戏开发领域,尤其是大型多人在线角色扮演游戏(MMORPG)的设计与实现中,服务端源码扮演着至关重要的角色。"mina mmorpg服务端源码"是一个专注于游戏服务器端开发的项目,其核心...

    MINA客户端与服务端通信实例

    1. 创建一个`IoAcceptor`实例,它是MINA服务端的核心组件,用于监听客户端的连接请求。通常我们会选择`NioSocketAcceptor`,因为它基于Java NIO实现。 2. 定义一个`ProtocolDecoder`和`ProtocolEncoder`,用于解码...

    mina_tcp服务端需要jar包.zip

    5. **线程模型**:MINA支持多线程模型,可以配置为单线程、多线程或者工作线程池模式,以适应不同场景下的性能需求。 6. **异常处理**:MINA提供了完善的异常处理机制,可以在Handler中捕获并处理各种网络异常,如...

    mina 服务器socket客服端发消息

    在Java开发中,Mina(Java Minimal ...在实际应用中,可能还需要考虑异常处理、心跳机制、多线程处理、消息序列化与反序列化等问题。Mina提供的API非常灵活,可以根据需求进行扩展和定制,以满足更复杂的应用场景。

    springboot整合mina

    这里可以设置端口号、传输类型(如NIO或EPOLL)、线程模型等参数。 ```java @Configuration public class MinaServerConfig { @Value("${mina.server.port}") private int port; @Bean public ...

    使用mina框架实现cmpp2.0服务端

    **使用mina实现CMPP2.0服务端的关键点** 1. **连接管理**:使用Mina的Acceptor来监听特定端口,接受来自移动网关的连接请求。每个连接通常对应一个独立的工作线程,处理来自客户端的CMPP请求。 2. **会话建立**:...

    mina 同步客户端,异步客户端

    1. **MINA服务端**:在MINA中,服务端通常被称为Acceptor。它负责监听指定的网络端口,接收客户端的连接请求,并为每个连接创建一个Session。Session是MINA的核心概念,它代表了服务端与客户端之间的一个连接实例。...

    一个源代码学习服务端 ,基于mina

    6. **并发编程**:由于服务端可能同时处理多个连接,了解Java多线程和并发控制机制,如synchronized关键字、锁和并发容器,以及如何在Mina框架中应用这些概念。 7. **日志和调试**:熟悉如何集成和使用日志框架(如...

    Mina断包,粘包处理(完整实例,有客户端,服务端)

    例如,它使用NIO(非阻塞I/O)来提高并发处理能力,避免了线程阻塞的问题。此外,通过缓冲区管理和零拷贝技术,Mina能够有效地减少CPU的使用和内存的消耗。 总的来说,理解和处理Mina中的断包和粘包问题,需要深入...

    mina及时推送客户端服务端实现

    通过多线程模型和缓冲区管理,MINA能有效减少系统资源消耗,提升服务端处理能力。 8. **安全性**:MINA支持SSL/TLS加密,可以保护传输数据的安全。在实际应用中,确保数据传输安全是必不可少的,尤其是在涉及敏感...

    服务端基于MINA2的UDP双向通信Demo演示(Java客户端)

    非阻塞I/O允许一个线程处理多个连接,提高系统资源利用率,特别适合高并发场景。 标签“UDP”和“MINA2”进一步强调了这个示例的关键技术点。UDP是一种无连接的、不可靠的传输层协议,它比TCP(传输控制协议)更轻...

    mina 多路分离解码

    1. 数据进入mina服务端,首先经过IoFilter链。 2. 在解码过滤器中,数据被分割成多个“消息”单元,每个消息对应一个连接。 3. 消息被传递给相应的解码器进行解码,解码器根据协议解析出有意义的信息。 4. 解码后的...

    MinaServer for Android

    在Android上运行服务端程序面临一些挑战,如资源限制、多线程管理以及后台服务的生命周期管理。MinaServer通过优化内存管理和线程模型,能在各种Android设备上稳定运行,包括三星平板、小米手机、华为手机、三星手机...

    基于Android开发MINA框架使用详解

    - 创建MINA服务端和客户端:服务端负责接收和分发数据,客户端用于发起连接并发送/接收数据。 3. **解决中文乱码问题** - 数据编码:确保服务端和客户端都使用相同的字符集进行编码和解码,例如UTF-8。在MINA的...

    mina即时聊天demo

    需要注意的是,由于Android平台的限制,需要适配多线程和网络访问策略。 6. **Demo学习要点** - 分析服务端和客户端的启动与监听过程,理解如何创建IoAcceptor和IoConnector。 - 研究数据的编码和解码过程,熟悉...

Global site tag (gtag.js) - Google Analytics