使用线程逐块处理文件

2023-11-30

我有一个由 5000 个 IP 地址组成的数组列表。对于每个 IP 地址,我想执行 SNMPGet 请求和 FTPDownload 命令。我想以一种方式实现它,其中一次有 2 个不同的线程针对前 5 个 IP 地址同时运行。执行完这些 IP 地址后,接下来的 2 个 IP 地址将在这些线程上执行。任何人都可以帮助如何做到这一点吗?

这里,connection是一个扩展了线程的类,要实现的工作写在它的run()方法中。请帮忙。

Connection newConnection =new Connection(0);
Connection newConnection1 =new Connection(1);

for(int i = 0; i < NE_list.getRowCount(); i=i+2)
{
if(NE_list.getValueAt(i, 0).toString().equals("true")) //Some condition here for the IP Address
{

            newConnection.i=i;
            newConnection1.i=i+1;
            newConnection.runprogram();
            newConnection1.runprogram();
 }


    } 

class Connection extends Thread{
int  i;
Connection(int val){
  i=val;
}
void runprogram(){
start();
}
public void run(){
//SNMP and FTP Code here for IP Address in index i of NE_list
}
}

执行器框架将最适合您的解决方案。我在这里创建了一个例子。您可以根据需要增加线程数。

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

class SomeRunnable implements Runnable {
    int threadNo = -1 ;
    List<String> list = new ArrayList<String>();
    public SomeRunnable(List list, int threadNo ) {
        this.list.addAll(list);
        this.threadNo =threadNo;
    }
    @Override
    public void run() {
        for (String element : list) {
            System.out.println("By Thread:" + threadNo+", Processed Element:" +element);
        }
    }

}

public class ExecutorDemo {
    public static void main(String[] args) {
        List<String> list = new ArrayList<String>();
        for (int i = 0; i < 100; i++) {
            list.add("Elem:"+i);
        }
        // Divide list 
        int divideIndex = list.size()/2;
        //Create objects of Runnable
        SomeRunnable obj1 = new SomeRunnable(list.subList(0, divideIndex),1);
        SomeRunnable obj2 = new SomeRunnable(list.subList(divideIndex,list.size()),2);

        //Create fixed Thread pool, here pool of 2 thread will created
        ExecutorService pool = Executors.newFixedThreadPool(2);

        pool.execute(obj1);
        pool.execute(obj2);

        pool.shutdown();
    }

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用线程逐块处理文件 的相关文章

随机推荐

  • 如何使用 ng-repeat 进行展平

    I have businesses businessName A address loc1 loc2 loc3 businessName B address loc1 loc2 businessName C address loc1 我想用
  • 如何使用 jQuery 获取 CSS 属性的数字部分?

    我需要根据 CSS 属性进行数值计算 但是 当我用它来获取信息时 this css marginBottom 它返回值 10px 有没有一个技巧可以只获取值的数字部分 无论它是否是px or or em管他呢 parseInt this c
  • 在另一个类中使用 Swingworker 发布方法

    我有一个 Swingworker 这样我的 GUI 可以在我在后台工作时保持响应 问题是我需要在各个点更新 gui 例如 用程序状态 信息更新标签 但我有很多处理要做 但我无法在一个巨大的 doInBackground 方法中完成所有处理
  • Windows 上的 GeoDjango:“找不到 GDAL 库”/“OSError:[WinError 126] 找不到指定的模块”

    我一直在尝试设置我的 Windows 计算机 以便我可以拥有带有 PostGIS 扩展的本地 postgreSQL 安装后 我希望能够在将其放入云之前在本地使用 geodjango 创建一个项目 我已经在本地计算机上使用 SQLite DB
  • flutter 中的三个点(...) 意味着什么?

    什么是 这段代码的意思是 代码是 if state isSubmitting const SizedBox height 8 const LinearProgressIndicator value null In Dart 三点称为spre
  • 为什么未命名命名空间是静态命名空间的“高级”替代品? [复制]

    这个问题在这里已经有答案了 C 标准中的 7 3 1 1 2 部分内容如下 static关键字的使用是 在 a 中声明对象时已弃用 命名空间范围 未命名的命名空间 提供一个更好的选择 我不明白为什么未命名的命名空间被认为是更好的选择 理由是
  • 如何在 Asp.net 中打开带有预填充附件的默认邮件客户端

    我正在尝试打开默认邮件客户端带有 Asp net 中预填充的附件 如果我在本地服务器上尝试这个 它工作正常 但是当部署到服务器时 它就不再工作了 这就是我到目前为止所做的 public void SendEmail try int coun
  • 当弹出窗口被阻止时如何通过javascript打开新窗口

    当 IE 和 Firefox 中的弹出窗口被阻止时 如何通过 javascript 打开新窗口 下面是代码
  • 如何从 HTML 页面读取特定数字 [关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 例如 如果我想从此页面设置索引值 http ca finance yahoo com q
  • 读取 PDF 文件中的日文字符

    我有以下命令 1010 TJ 我知道它在十六进制部分隐藏了日语 因为这是 PDF 中唯一的内容 并且这一行位于 pdf 文件中单个页面的唯一内容流中 问题是 无论我如何尝试解码这个十六进制字符串 我都会得到乱码 我已经将这些十六进制字符串解
  • ios电话号码格式

    在我的应用程序中 我将电话号码作为用户的输入 号码应采用美国格式 我想动态显示它 如 555 888 888 例如 当用户开始输入数字时 当他达到 4 位数字时 它会显示类似 555 4 等数字 我尝试了replaceString方法 但我
  • Spring Boot 2.3.1 在多租户环境中动态更新 Jdbc 模板架构

    我的项目位于 spring boot starter parent 1 5 9 RELEASE 我正在将其迁移到 spring boot starter parent 2 3 1 RELEASE 这是一种多租户环境应用程序 其中一个数据库将
  • Pandas Dataframe 中不同列的多重索引

    在我读完之后netCDF文件通过xray 我得到一只熊猫dataframe with a multiindex像这样 temp date lat lon 2012 01 01 54 10 206 11 207 55 10 210 11 21
  • SQL Azure BACPAC 提取

    如何以编程方式 C 从 SQL Azure 数据库中提取 BACPAC 文件 我正在考虑创建一个天蓝色的作业来提取这个 bacpack 文件 并在发生特定异常时将其保存到我的存储帐户 我试图获取 heinsenbug 和当时数据库的快照该活
  • Yii2 CORS 与 Auth 不适用于非 CRUD 操作

    我正在 Yii2 中构建 API 并添加了 CORS 和身份验证 这适用于所有创建 读取 更新 删除操作 但不适用于自定义操作 有谁之前经历过这个吗 网址管理器 class gt yii rest UrlRule controller gt
  • 如何使用 Jsoup 替换每个标签中的“文本”

    我有以下 html div p text strong text strong text em text em text p div 如何使用将每个标签中的 文本 替换为 单词 Jsoup图书馆 我想看看 div p word strong
  • 多色表奇偶 td

    我有一个用 CSS 设计的表格 其中包含偶数和奇数 The td偶数 奇数 CSS 代码 table box tr nth child odd td background color ffffff odd table box tr nth
  • 在 Python 中集成值列表

    我有一个数据列表 代表加速度 为了简单起见 我们假设这个列表是 X 1 2 3 4 5 我想将此列表中的每个值集成两次 双重集成 以便我可以检索有关位置的信息 快速提醒 位置 速度 加速度是相关的 您可以通过两次求导来找到加速度 或者 如果
  • C# 中“抽象覆盖”有什么用?

    出于好奇 我尝试重写基类中的抽象方法 并方法实现抽象 如下 public abstract class FirstAbstract public abstract void SomeMethod public abstract class
  • 使用线程逐块处理文件

    我有一个由 5000 个 IP 地址组成的数组列表 对于每个 IP 地址 我想执行 SNMPGet 请求和 FTPDownload 命令 我想以一种方式实现它 其中一次有 2 个不同的线程针对前 5 个 IP 地址同时运行 执行完这些 IP