易截截图软件、单文件、免安装、纯绿色、仅160KB

使用JAVA建立稳定的多线程服务器

 
本文详细的介绍了使用Java语言建立一套多线程服务器的过程,该服务器使用对象传递消息,在线程中使用队列机制,使服务器的性能大大提高了。这套服务器可以被用于各种C/S或B/S结构的应用程序中。
Java语言是完全面向对象
的,它的线程机制和对象序列化特别容易使用,使用Java来建立一套多线程服务器要比使用其它语言方便的多,如果你再把它的异常处理机制利用好,那么你就
可以建立一个商业级的多线程服务器了。由于采用了消息队列和Socket传输方式,所以不会出现丢消息的问题。这套服务器可以作为实时聊天服务器、多人协
同的协作服务器等等。
消息系统的建立
这套服务器的消息系统采用的是对象传输的机制,而不是以前常常使用的字符串传输。采用对象传输的好处是扩展方便,如需要建立一个新的消息只需要从一个统一的基类继承下来,然后再写自己实现的方法就行了。这样也符合面向对象领域里一条重要的原则:
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(),填写该方法就可以实现对消息类的处理,而服务器只负责完成消息的转发功能。这样,一套消息系统就建立了。
回页首
服务器的结构
如果要服务器实现同时为每个客户端


相关文档:

Java 正则表达式

 fm.split("[");  // error
-------------------
java.util.regex.PatternSyntaxException: Unclosed character class near index 0[+
   ^
    at java.util.regex.Pattern.error(Unknown Source)
    at java.util.regex.Pattern.clazz(Unknown Source)
 & ......

java 程序题

//1.编写一个程序,该程序可读入一个外部文件,并将文件内容赋值给一个字符串
package Zhangyiwei
import java.io.*;
public class Zhangyiwei {
    public static String filename = "c:\\1.txt";
    public static void main(String[] args) throws FileNotFoundException, IO ......

java专业术语标准化规范表

 -A-
AJAX: (建议不译,原因:专有名词) [Asynchronous JavaScript and XML,异步JavaScript及XML]
annotation: 注解
Ant: (建议不译,原因:专有名词)
AOP: (建议不译,原因:专有名词) [aspect-oriented programming, 面向层面编程]
application: 应用
argument: 参数
-B-
B2B: (建议不译,原因:专有名词) ......

java练习程序1

 /*import javax.swing.JFrame;*/
/*import javax.swing.JOptionPane;*/
public class TestFrame{
public static void main(String[] args) throws Exception{
/*JFrame frame1 = new JFrame();
frame1.setTitle("Windows 1");
frame1.setSize(200,150);
frame1.setLocation(200,100);
frame1.setD ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号