日期:2014-05-20  浏览次数:20799 次

一个多线程的问题
...省略 
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可以吗?最好能有一段代码例子,不胜感谢

------解决方案--------------------
你有没有特殊需求,需要标记线程的没有
比如说:线程1,我标记我"1";线程2标记为"2"
主要就是说你需要根据线程的部分信息来获得对应的线程吗

如果不需要,直接放到ArrayList(数组)中就可以了,否则可以考虑带Key的HashMap(线程有点不安全)
可能需要手动加锁之类的动作

------解决方案--------------------
//做一个集合(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(){...}
}