引言: 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建立稳定的多线程服务器上一页 ...服务器的工作过程是这样的,建立了一个server类作为主类,它含有程序的入口函数main().在构造函数中初始化一个数组存放clientsingle类,它其实就是单独处理一个连接用户的类.然后启动一个线程portlistenthread,该线程的作用就是监听端口上有没有人登陆,当有人连接时交给server的addclient()处理.server的addclient()方法会在刚才那个数组中建立一个clientsingle对象,然后把剩下的事都交给它做. 【程序编程相关:
中国移动采购3G测试平台 以确保通信可靠】 【推荐阅读:
光学无线技术FSO 延展光纤网络】端口监听线程类portlistenthread 【扩展信息:
NGN成行业风向标 信产部并不专宠3G】 该线程类在run()函数的开始部分首先要检查serverscoket是否为空,保证循环开始时不要出错.然后进入一个死循环的监听: while(true) { //死循环监 try{socket clientsocket=null; clientsocket=serversocket.accept(); server.addclient(clientsocket);//转交server处理 } catch (ioexception e){system.out.println("监听端口时出错"+e);}//显示错误 } 单个客户端在连接池中的映像类clientsingle 每一个客户端连接到服务器后,服务器会自动在连接池中建立该客户端的一个映像,所有的操作都交给这个映像去具体执行,所以clientsingle中一定要包含客户端的一些基本的信息.比如客户端的名称.登陆时间等等.在该类中有两个消息队列sendqueue(发送队列)与receivequeue(接收队列)缓存消息. clientsingle类是继承自thread的,它还是一个调用者.在初始化的时候启动两个子线程类singlesender与singlelistener运行.singlesender负责监听指令发送队列中有没有指令,有则发送;singlelistener负责监听有没有消息到达,有则把这些消息加入到接收队列中去,由clientsingle处理.所以clientsingle的主要任务就是对这两个队列的处理.这两个队列可以用vector实现,非常地简单. //-------将消息加入发送队列中------------ synchronized void send(object o) { sendqueue.add(o); } 为了稳定控制子线程的运行,并不鼓励在run()方法的死循环标志都用true,而是使用了一个布尔型的变量finish....
下一页 摘要:1. 线程的几种状态
线程有四种状态,任何一个线程肯定处于这四种状态中的一种:
1) 产生(new):线程对象已经产生,但尚未被启动,所以无法执行。如通过new产生了一个线程对象后没对它调用start()函数之前。
2) 可执行(runnable):每个支持多线程的系统都有一个排程器,排程器会从线程池中选择一个线程并启动它。当一个线程处于可执行状态时,表示它可能正处于线程池中等待排排程器启动......