读取单个文件的Java多线程应用程序

2023-12-02

我目前编写的程序使用 32 个线程,每个线程读取 1 个文件(即 32 个 .txt 文件)。多线程与 CPU 速度无关,但每秒对 BING 的 api 进行 32 次调用比调用 1 次要快得多。每个 .txt 文件都包含搜索查询列表。我创建一个线程,它一次从文件中读取一行。是否可以创建所有 32 个线程并将它们指向一个 .txt 文件?


使用生产者-消费者模式。只有一个线程读取文件并将每一行/命令推入数组阻塞队列(线程安全读写)使用put().

所有其他 32 个线程应通过调用从同一队列对象读取take()。如果队列为空,它们会阻塞,这很好。

这种解决方案更好,因为磁盘本质上是单线程的,因此通过并发读取文件不会得到太多信息。

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

读取单个文件的Java多线程应用程序 的相关文章

随机推荐

  • 递归思维的算法是什么? (就具体例子而言)

    我就是无法理解递归 我理解所有概念 将解决方案分解为更小的案例 并且在一遍又一遍地阅读它们后我可以理解解决方案 但我始终无法弄清楚如何使用递归来解决问题 有没有系统的方法来提出递归解决方案 有人可以向我解释一下他们尝试解决以下递归问题时的思
  • Android - 动态添加视图到视图中

    我有一个视图布局
  • INNO设置:如何获取主显示器的分辨率?

    我正在尝试使用 INNO 编写安装程序脚本 但我陷入了困境 我需要获取运行安装程序的计算机的屏幕分辨率 并使用该值在桌面上创建一个以该分辨率为一的快捷方式的论点 我知道如何创建快捷方式 但是我不知道如何提取屏幕分辨率以及如何传递该信息 可能
  • 在 CUDA 中,什么是内存合并,它是如何实现的?

    CUDA 全局内存事务中的 合并 是什么 即使读完我的 CUDA 指南后我还是无法理解 怎么做 在CUDA编程指南矩阵示例中 逐行访问矩阵称为 合并 或者逐列访问矩阵称为合并 哪一个是正确的 为什么 此信息可能仅适用于计算能力 1 x 或
  • 启用 COM 接口封送处理需要什么?

    我有一个没有类型库的 32 位 ATL COM 组件 它为一个给定的类提供了一个类工厂 该类实现了多个接口 当我将它用作进程内服务器时 一切正常 客户端调用 CoCreateInstance 实例化对象 并且 QueryInterface
  • 使用实体框架导航属性而不创建大量查询(避免 N+1)

    我一直在使用 Entity Framework Profiler 来测试 MVC 项目中的数据访问 并且遇到了几个页面 其中由于 N 1 问题 我进行的数据库查询远多于我需要的数量 这是一个简单的例子来说明我的问题 var club thi
  • 将字符串拆分为 | Java 中的(管道)[重复]

    这个问题在这里已经有答案了 我有以下文字 ARIYALUR ARIYALUR CHENNAI CHENNAI COIMBATORE COIMBATORE CUDDALORE CUDDALORE DINDIGUL DINDIGUL ERODE
  • 在 Yii 框架中设置会话

    我正在用 Yii 开发一个网站 我的页面中有一个按钮 我需要在用户单击它时设置一个会话变量 并在用户单击另一个按钮时获取会话值 我怎样才能做到这一点 Use CWebUser状态方法 set session variable Yii app
  • 对 stackexchange api 的 Http 请求返回不可读的 json

    我正在尝试从 stackexchange api 获取一些 json 数据 接收 OAuth 代码和访问令牌工作正常 但是当调用实际的数据获取端点时 响应看起来确实很奇怪 可能是编码或类似的 该请求如下所示 var client reque
  • 如果网络中断,socket 会发生什么情况

    假设一个简单的网络模型 A 已成功创建到 B 的 TCP 连接 并且它们正在这样相互通信 A lt gt B 我知道如果A上的程序死掉 例如核心转储 这将导致向B发送RST数据包 因此B的任何读取尝试都会导致EOF 而B的任何写入尝试都会导
  • 从城市名称获取纬度和经度

    在我当前的 Android 应用程序中 我想根据输入的城市名称 街道名称或邮政编码获取坐标 我怎样才能做到这一点 此致 通过网络获取地理坐标 private static JSONObject getLocationInfo String
  • 如何根据另一个向量中的条件从向量中删除元素?

    我有两个等长的向量 我想根据其中一个向量中的条件从中删除元素 应对两者应用相同的删除操作 以便索引匹配 我想出了一个解决方案std erase 但速度非常慢 vector
  • 带问号的 nvarchar 列结果

    我正在尝试更新队列项目并检索其列文本内容 问题是诸如希伯来字符之类的特殊符号会导致问号 通过直接制作 我可以完美地看到文本SELECT条款 在sql management studio Message s column hey 当我尝试检索
  • 导入模块中全局变量的可见性

    我在 Python 脚本中导入模块时遇到了一些困难 我将尽力描述该错误 为什么会遇到它 以及为什么我要使用这种特定的方法来解决我的问题 我将在稍后描述 假设我有一个模块 在其中定义了一些实用函数 类 它们引用在将导入该辅助模块的命名空间中定
  • @font-face src: local - 如果用户已经拥有本地字体,如何使用它?

    正确的使用方法是什么 font face这样如果用户已经拥有该字体 浏览器就不会下载该字体 我正在使用 font face 来定义 DejaVu 它已经安装在我的系统 linux 上 Firefox 不下载字体 但 Chromium 每次都
  • 使用 NodeJS 中的服务主体连接到 Azure SQL,但令牌被拒绝

    我在使用服务主体让 NodeJS 应用程序连接到 Azure SQL 数据库时遇到问题 但是 当我尝试使用 C 代码片段执行相同的操作时 效果很好 我注意到两种语言的身份验证返回的令牌有点不同 如果我从 C 获取正确的令牌并将其硬编码到 N
  • 如何获取 Alexa 技能的用户日期/时间或时区信息?

    我正在使用 Lambda Python 来开发一项技能 并且我有兴趣为用户提供一些与时间相关的信息 上request对象有一个timestamp但那是没有偏移的 UTC 有没有一种方法可以找到用户的日期 时间或时区 而不必询问位置信息 如果
  • 类型错误:observable.of 不是函数 - [电子邮件受保护] - [电子邮件受保护] - angular5

    升级到后 电子邮件受保护 并将所有 RxJS 导入 方法和运算符转换为新的 gt 5 5 形式 我在运行时收到类型错误 Observable of不是一个函数 定义为扩展的成员的所有方法都会发生相同的错误Observable 例如 Obse
  • Java寻找具有特定注释的方法及其注释元素

    假设我有这个注释类 Retention RetentionPolicy RUNTIME Target ElementType METHOD public interface MethodXY public int x public int
  • 读取单个文件的Java多线程应用程序

    我目前编写的程序使用 32 个线程 每个线程读取 1 个文件 即 32 个 txt 文件 多线程与 CPU 速度无关 但每秒对 BING 的 api 进行 32 次调用比调用 1 次要快得多 每个 txt 文件都包含搜索查询列表 我创建一个