socket-Socket多线程遍历一个数组

问题描述

Socket多线程遍历一个数组

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

解决方案

你是要用什么语言呢?如果是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();
        }
    }
}

解决方案二:

一个简单的多线程socket
C++ Socket 多线程

解决方案三:

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

时间: 2024-08-02 09:28:00

socket-Socket多线程遍历一个数组的相关文章

VB6.0中For语句的两种用法,如何用第二种用法遍历一个数组?

问题描述 VB6.0中For语句的两种用法,如何用第二种用法遍历一个数组? VB6.0中For语句的两种用法,如何用第二种用法遍历一个数组? 解决方案 正序 for i = lbound(arr) to ubound(arr) arr(i) next 逆序 for i = ubound(arr) to lbound(arr) step -1 arr(i) next 解决方案二: 一个加密解密函数 for vb6.0!VB6.0中的编译预处理--#IF语句

Java Web项目中使用Socket通信多线程、长连接的方法_java

很多时候在javaweb项目中我们需要用到Socket通信来实现功能,在web中使用Socket我们需要建立一个监听程序,在程序启动时,启动socket监听.我们的应用场景是在java项目中,需要外接如一个硬件设备,通过tcp通信,获取设备传上来的数据,并对数据做回应. 先看一下web的监听代码: import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; public class

MFC写图像处理程序,现有很多个像素点要进行处理,每个像素点都要遍历同一数组中元素并获的一个值

问题描述 MFC写图像处理程序,现有很多个像素点要进行处理,每个像素点都要遍历同一数组中元素并获的一个值 现在想用多线程加速要如何做呢?因为要处理很多点,用单线程太慢了,求高手指点 解决方案 你这个任务,采用多线程或者单线程时间都一样! 解决方案二: 多个线程,每个线程处理一部分像素点.相当于分配任务 解决方案三: 创建多个线程,给线程分配一部分像素点,主线程等待所有任务线程完成,这里可以显示"处理中"对话框,然后把处理结果汇总起来就行啦

socket-java如何使用Socket实现多线程多人聊天

问题描述 java如何使用Socket实现多线程多人聊天 java如何使用Socket实现多线程多人聊天,提供源码最好了.希望说详细一点. 解决方案 简单的聊天室: ========================================================================================== server: import java.net.*; import java.io.*; import java.util.*; public clas

socket编程多线程文件传输

问题描述 socket编程多线程文件传输 要实现的是开多线程传输一个文件,目的是提高传输速度. 思路是这样的:服务端开多线程,将文件分割,一个线程传输一块,客户端也开多线程,每个线程接受一块,最后拼成一个完整的文件.服务端支持多线程, 客户端要支持多线程, 然后客户端每个线程都建立连接到服务端请求一个文件的某个分片. 希望大家可以提供一下类似的代码,现在只有思路不知道怎么下手. 解决方案 按照你的思路一点点来吧,哪里不明白就攻克哪里,慢慢的就成功了! 解决方案二: 可以用RandomAccess

java中的基于套结字(socket)的通信 一. 一个双人单方向通信例子

/* * date: 2004-11-29 author:zhangyu6050; * todo:一个双人单方向通信例子 * 本文件是主机方(Server) * 提供主机与客户机的通信套节字:fromClient * bugs: */ import java.net.*;import java.io.*; public class ChatServer { public static void main(String[] args) { final int port = 1775; //建立通信

struts2 0-JSP中如何遍历一个字符串数组并取出字符串加在另一个标签中

问题描述 JSP中如何遍历一个字符串数组并取出字符串加在另一个标签中 删除/s:a /s:iterator 解决方案 /c:set 我这里只去取了第一个.不过道理是一样的. 解决方案二: 这个文本编辑器把我的代码给编辑了 <s::set var="img" value="${fn:split(items.images, ',')}"></s:set> <a href="minisetweb/productinfo?id=${i

后台遍历一个HTML页面

遍历|后台|页面 前几天写一个程序,需要后台遍历一个动态生成的页面,找寻特定节点 于是写了以下代码: public class HtmlReader { public HtmlReader() { } /// /// 搜索特定标记的节点 /// /// /// /// 返回属性值数组 public static ArrayList SearchAttributes(string inMarkup, string KeyWord, string AttrName) { IHTMLDocument2

php判断一个数组是否为有序的方法

 这篇文章主要介绍了php判断一个数组是否为有序的方法,涉及php操作数组遍历的相关技巧,非常具有实用价值,需要的朋友可以参考下     本文实例讲述了php判断一个数组是否为有序的方法.分享给大家供大家参考.具体分析如下: 这段代码的时间复杂度为O(n) ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43