一个多线程的问题

ljjwt 2007-10-15 08:56:05
...省略
while(true){
try{
Socket s1 = server.accept();
ThreadHandler Thread1=new ThreadHandler(s1);
Thread1.start();
}catch(IOException e){ }
}
...省略
class ThreadHandler extends Thread{
ThreadHandler(Socket s1){...}
public void run(){...}
}
我只是把大体的代码写了一下。
我的问题就是:由于每个线程都是由循环语句产生的,所以对象名也都是
Thread1,我如何访问其中某个线程,或者说怎么给所有这些线程做个标记呢?哪位高手能告诉我一种思想也可以,谢谢
用ArrayList可以吗?最好能有一段代码例子,不胜感谢
...全文
71 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
heroc81 2007-10-17
  • 打赏
  • 举报
回复
private static HashMap<String,ThreadHandler> map = new HashMap<String,ThreadHandler>();

while(true){
try{
Socket s1 = server.accept();
ThreadHandler Thread1=new ThreadHandler(s1);
String key = "";
/**
*自己根据你线程的部分信息来确定该对象的内容最好不要有重复
*比如你有多个IP,没有IP一个线程,那么你可以把IP做为KEY内容
*/
map.put(key,Thread1);
Thread1.start();
}catch(IOException e){ }
}


...

String key = "";
ThreadHandler Thread1 = map.get(key);//取得对应的线程
//注意通过Thread1.getState() 来分析当前线程的状态
heroc81 2007-10-16
  • 打赏
  • 举报
回复
你有没有特殊需求,需要标记线程的没有
比如说:线程1,我标记我"1";线程2标记为"2"
主要就是说你需要根据线程的部分信息来获得对应的线程吗

如果不需要,直接放到ArrayList(数组)中就可以了,否则可以考虑带Key的HashMap(线程有点不安全)
可能需要手动加锁之类的动作
awusoft 2007-10-16
  • 打赏
  • 举报
回复
ThreadHandler在构造这个类的时候不妨通Socket 中的一值来做一个标记.这样就可以知道了.
class ThreadHandler
{
String ip="";
//构造的时候给通过Socket给IP一个值
}
awusoft 2007-10-16
  • 打赏
  • 举报
回复
//做一个集合(Vector吧),所在类中添加返回此集合的方法
while(true){
try{
Socket s1 = server.accept();
ThreadHandler Thread1=new ThreadHandler(s1);

//把Thread1加到线程的集合中去.

Thread1.start();
}catch(IOException e){ }
}
...省略
class ThreadHandler extends Thread{
ThreadHandler(Socket s1){...}
public void run(){...}
}
ljjwt 2007-10-16
  • 打赏
  • 举报
回复
我就是要根据线程的部分信息来获得对应的线程,如何进行标记呢?并使用呢? 最好能有点代码例子 谢谢了!!!

62,623

社区成员

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

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