Socket多线程遍历一个数组

现在传来一个List里面装的IP,大概两千多条数据,我应该怎样实现多线程遍历?最好是简单的代码解释。谢谢大神了。

定义一个全局flag来表示是否找到,0为未找到
int flag =0;
然后开线程,所有线程可以用同一个处理函数
就是查找目标ip,若找到则把全局flag置1,如:
while(flag)
{
ret = search_ip();
if(找到)
{
flag =1;
break;
}
}

你是要用什么语言呢?如果是java的话,可以先把List的数据存入队列中,由线程去获取后再处理。
实例代码,定义执行线程和总控制类如下:

 import java.util.concurrent.ArrayBlockingQueue;

public class TaskExecutor implements Runnable{
    private ArrayBlockingQueue<String> dataSource;
    private String name;

    public TaskExecutor(ArrayBlockingQueue<String> dataSource,String name){
        this.dataSource = dataSource;
        this.name = name;
    }

    @Override
    public void run() {
        if(dataSource==null){
            return;
        }

        while(!dataSource.isEmpty()){
            String ip = null;
            synchronized(dataSource){
                ip = dataSource.poll();
            }

            //TODO 处理队列中获取的数据
            System.out.println("thread "+name+",process ip :"+ip);
        }

    }

}

测试代码:

 public class Controller {
    public static void main(String[] args) {
        List<String> datas = new ArrayList<String>();
        //存入N条待处理的IP信息
        datas.add("10");
        datas.add("21");
        datas.add("22");
        datas.add("23");
        datas.add("24");
        datas.add("25");
        datas.add("26");
        datas.add("27");
        datas.add("28");
        datas.add("29");
        datas.add("20");
        datas.add("32");
        datas.add("42");
        datas.add("52");

        ArrayBlockingQueue<String> queue = new ArrayBlockingQueue<String>(datas.size(), false, datas);
        //开启N个线程
        int n = 2;
        for(int i = 0;i<n;i++){
            new Thread(new TaskExecutor(queue,"thread"+i)).start();
        }
    }
}