当前位置: 技术问答>java相关
服务器线程问题
来源: 互联网 发布时间:2015-10-08
本文导语: 我要做的是在服务器端监听用户端发送来的消息,然后在进行处理,处理完了在发给客户端,不需要什么显示,只需要一个线程监听就行了。 请问怎么样在服务器启动时就把这个线程调入,是不是只写一个继承与T...
我要做的是在服务器端监听用户端发送来的消息,然后在进行处理,处理完了在发给客户端,不需要什么显示,只需要一个线程监听就行了。
请问怎么样在服务器启动时就把这个线程调入,是不是只写一个继承与Thread的类就行了?
请问怎么样在服务器启动时就把这个线程调入,是不是只写一个继承与Thread的类就行了?
|
public class server extends Thread {
public void run(){
try{
ServerSocket SvrSocket = new ServerSocket(PORT);
System.out.println(">> 通信服务器启动成功......n");
while(iAmKeepingRunning) {
Socket mySocket = SvrSocket.accept();
DebugWriter.println("通信服务器收到新的请求:" +
mySocket.getInetAddress().getHostAddress() + "@" + mySocket.getPort());
//debug标志
if(rflag != null && rflag.equals("true"))
myReceiver = new Receiver(mySocket, true, getMaxClientId());
else
myReceiver = new Receiver(mySocket, false, getMaxClientId());
myReceiver.start();
}
}catch(IOException e) {
CommunicationLog.log(e.getMessage());
e.printStackTrace();
System.out.println(">> 通信服务器初始化失败......n");
System.exit(0);
}catch(Exception e) {
CommunicationLog.log(e.getMessage());
e.printStackTrace();
}
}
}
Receiver 类是单独处理每一个客户连接的类。
public void run(){
try{
ServerSocket SvrSocket = new ServerSocket(PORT);
System.out.println(">> 通信服务器启动成功......n");
while(iAmKeepingRunning) {
Socket mySocket = SvrSocket.accept();
DebugWriter.println("通信服务器收到新的请求:" +
mySocket.getInetAddress().getHostAddress() + "@" + mySocket.getPort());
//debug标志
if(rflag != null && rflag.equals("true"))
myReceiver = new Receiver(mySocket, true, getMaxClientId());
else
myReceiver = new Receiver(mySocket, false, getMaxClientId());
myReceiver.start();
}
}catch(IOException e) {
CommunicationLog.log(e.getMessage());
e.printStackTrace();
System.out.println(">> 通信服务器初始化失败......n");
System.exit(0);
}catch(Exception e) {
CommunicationLog.log(e.getMessage());
e.printStackTrace();
}
}
}
Receiver 类是单独处理每一个客户连接的类。
|
呵,我来废话一句:那个 debug 是用来 debug Receiver 用的。等同于下面的代码。
myReceiver = new Receiver(mySocket, rflag != null && rflag.equals("true"), getMaxClientId());
myReceiver.start();
也就是说,用 True 或 False 来初始化的 Receiver 也就意味着,“Debug状态的Receiver”和“非Debug状态的Receiver”。
意思解释清楚了吗?
个人认为,这个用来 Debug 的方式并不好。因为在它的代码中包含了对系统的正常运行毫无意义的 Debug 逻辑。在 Debug 方面是有更好解决方案的。自己想想吧。 :)
myReceiver = new Receiver(mySocket, rflag != null && rflag.equals("true"), getMaxClientId());
myReceiver.start();
也就是说,用 True 或 False 来初始化的 Receiver 也就意味着,“Debug状态的Receiver”和“非Debug状态的Receiver”。
意思解释清楚了吗?
个人认为,这个用来 Debug 的方式并不好。因为在它的代码中包含了对系统的正常运行毫无意义的 Debug 逻辑。在 Debug 方面是有更好解决方案的。自己想想吧。 :)
|
继承Thread或者实现Runnable