【网络、socket】如何实现一个监听线程类能启动两种不同类型的线程??

thor_lee 2012-09-28 10:21:36
情况是这样的:

有两个类son0,son1,都继承于抽象父类father,father实现了runnable借口


//父类
public Class abstract Father implements Runnable {
private Socket f_sock;
public Father(Socket sock) {
f_sock = sock;
}
public void run(){
fun(f_sock);
}
protected abstract int fun(Socket sock);
}

//子类0
public Class Son0 extends Father {
protected abstract int fun(Socket sock){
//对sock进行处理
return 0;
}
}

//子类1
public Class Son0 extends Father {
protected abstract int fun(Socket sock){
//对sock进行处理
return 1;
}
}


有另一个监听线程Listener,作用是监听不同的端口,然后分别启动线程son0和son2对网络数据进行不同的处理


//监听类,代码不完整
public class Listener extends Thread {
private ServerSocket ss;
public Listener(int port/*,Type para*/) {
ss = new ServerSocket(port);
}
public void run() {
while(true) {
try {
Socket sock = ss.accept();
//new一个son线程对sock进行处理
}
}
}
}


main函数为:

public static void main(String[] args) {
new Listener(8888/*, para0*/).start();
new Listener(9999/*, para1*/).start();
}



现在主要的问题就是在Lisnter类里,我的初衷是给Listener的构造函数加一个参数para,来对应线程son0和son1,根据para,在ss.accept()返回时,就可以启动对应的son线程了。

但是该如何设置这个参数难道我了。因为son线程是在监听线程里面才被new出来的,所以我想这个para应该是一个能够代表son线程类型的参数,即这个实参应该是一个能表征类型的类。在java中有这种用法么?
或者是有别的方法能够实现我想要的效果?

我想过一种比较笨的方法就是创建两种监听线程类Son0Listener和Son1Listener,但是这样代码会很恶心,很多重复的。

求各位高手支招,如何解决这个问题?

谢谢了!!

...全文
66 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
thor_lee 2012-09-28
  • 打赏
  • 举报
回复
完全没人理啊!!发错版块了么???

58,453

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧