引言: Java语言是完全面向对象的,它的线程机制和对象序列化特别容易使用,使用Java来建立一套多线程服务器要比使用其它语言方便的多,如果你再把它的异常处理机制利用好,那么你就可以建立一个商业级的多线程服务器了。
摘要:1、使用线程例子
package untitled1;import javax.swing.*;import java.awt.event.*;import java.awt.*;import com.borland.jbcl.layout.*;/*** title:* description:* copyright: copyright (c) 2002* company:* @author*......
摘要:数据压缩概述文件中数据冗余的最简单的类型是"字符的复制"。让我们先来看下面一个字符串:jjjjjjaaaavvvvaaaaaa
这个字符串可以用更简洁的方式来编码,那就是通过替换每一个重复的字符串为单个的实例字符加上记录重复次数的数字来表示,上面的字符串可以被编码为下面的形式:6j4a4v6a
在这里,"6j"意味着6个字符j,"4a"意味着4个字符a,以此类推。这种字符串压缩方式称为"行程长......
使用JAVA建立稳定的多线程服务器java语言是完全面向对象的,它的线程机制与对象序列化特别容易使用,使用java来建立一套多线程服务器要比使用其它语言方便的多,如果你再把它的异常处理机制利用好,那么你就可以建立一个商业级的多线程服务器了.由于采用了消息队列与socket传输方式,所以不会出现丢消息的问题.这套服务器可以作为实时聊天服务器.多人协同的协作服务器等等. 【程序编程相关:
中国移动采购3G测试平台 以确保通信可靠】 【推荐阅读:
光学无线技术FSO 延展光纤网络】消息系统的建立 【扩展信息:
NGN成行业风向标 信产部并不专宠3G】 这套服务器的消息系统采用的是对象传输的机制,而不是以前常常使用的字符串传输.采用对象传输的好处是扩展方便,如需要建立一个新的消息只需要从一个统一的基类继承下来,然后再写自己实现的方法就行了.这样也符合面向对象领域里一条重要的原则:ocp(open_closed principle),即一个好的设计应该能够容纳新的功能的增加,但是增加的方式不是修改原有的类,而是添加新的类. 首先建立一个基类:msg,该抽象类中有两个域sender与receiver分别纪录消息的发送者与接收者.这两个域是在构造消息类时就填写的,receiver域可以为空,空表示发给谁都可以,由转发服务器来决定.该类的方法包括取得这两个域的值与消息的处理函数.消息的处理函数process()是空函数,供继承者重载. 建立了这个抽象基类后,你就可以继承它完成你自己的类.举个例子,假如我要建立一个分组协同工作的绘图系统,而且支持组员之间的对话,那么我可以建立如下的类集合: sendtextmsg(string sender,string receiver,string info)//向指定的人发送对话. addlinemsg(string sender,point a,point b)//在指定的点之间绘制一条直线 addrectangle(string sender,point start,point end)//建立指定的矩形 addrotundamsg(string sender,point center,int radius)//建立指定的圆 removeobjectmsg(string sender,int id)//删除指定编号的图形对象 …… 以此类推,可以建立很多的消息类.在每个类的内部都由一个处理该类的方法process(),填写该方法就可以实现对消息类的处理,而服务器只负责完成消息的转发功能.这样,一套消息系统就建立了. 服务器的结构 如果要服务器实现同时为每个客户端服务,就要使用多线程,建立一个线程池,当有客户端连接时就在池中开辟一个线程为它服务.同样,要避免大量消息到达时处理不过来而导致丢失的情况,就要使用消息队列.这个服务器是分层的处理的. ...
下一页 摘要:1. 线程的几种状态
线程有四种状态,任何一个线程肯定处于这四种状态中的一种:
1) 产生(new):线程对象已经产生,但尚未被启动,所以无法执行。如通过new产生了一个线程对象后没对它调用start()函数之前。
2) 可执行(runnable):每个支持多线程的系统都有一个排程器,排程器会从线程池中选择一个线程并启动它。当一个线程处于可执行状态时,表示它可能正处于线程池中等待排排程器启动......