gpt4 book ai didi

java - 多线程应用程序,动态创建新线程?

转载 作者:行者123 更新时间:2023-11-30 05:01:29 26 4
gpt4 key购买 nike

现在我有一个带有 Gui 的程序,它对我指定的 url 进行索引。我需要一次索引 15 个内容,并且我只打开了程序的 15 个窗口并单独输入我想要索引的 url。然而,这 15 个 url 每小时左右都会发生变化...我有一个单独的程序,它将这 15 个不断变化的 url 存储在我的 mysql 数据库的表中。我可以从我的数据库中获取这些网址(我将它们存储在数组列表中),但我不确定如何对我的应用程序进行多线程处理,这样我就不必手动将网址输入到我的应用程序中。

我的问题:有人能给我一个例子/将我链接到一个教程,说明如何为数组列表中的每个网址创建一个新线程(这个数组列表也会改变,所以我需要为它创建一个新线程吗?也改变这个数组列表?)

我看过关于并发和高级并发的java站点,但并没有真正理解他们给出的示例(我仍然是一个初级程序员,所以请耐心等待)

希望我能足够详细地解释我想要做什么提前致谢

编辑:我索引的网址每隔几秒就会更改一次,这就是为什么我认为我不能一个接一个地对每个网址执行我的方法,因此为什么我相信它需要多线程?

第二次编辑(我相信这些人明白我在问什么):

@Jon Storm 有两个问题:1) 获取 URL 列表 2) 访问所述 URL。我将使 URL getter 成为单线程,然后分派(dispatch)到 getter 的线程池。该调度程序还可以对待处理的获取进行排队等。 – pst

@Jon Storm:您能否更新您的问题以更明确地描述您想要做什么?如果理解正确的话,您需要一次又一次地对包含 15 个 URL 的列表进行索引,因为这些 URL 处的页面内容每 3 秒就会更改一次。您希望每小时更新一次要索引的 URL 列表,方法是从数据库中获取它们。是对的吗? – JB 尼泽特

最佳答案

在我看来,您的问题不在于多线程,而在于从应用程序的 GUI 中输入某些内容,从数据库中获取 URL。

为什么不在从数据库获取 URL 的应用程序中简单地重用 GUI 应用程序的类(或部分代码,如果不可能按原样重用这些类)(即 URL 索引方法) .

我的猜测是,您可以在单个线程中一个接一个地为这 15 个 URL 编制索引。在尝试使用线程之前我会尝试这样做。

程序看起来像这样:

  1. 从数据库中获取 15 个网址并将它们放入列表中
  2. 遍历列表并为每个网址建立索引
  3. 睡一会儿,
  4. 转到 1

编辑:

由于似乎必须一次又一次地对 URL 进行索引,直到 URL 列表发生变化,因此我将使用此算法:

  1. 使用Executors.newCachedThreadPool()创建线程池
  2. 从数据库获取网址
  3. 对于每个 URL,创建一个任务,该任务将一次又一次地索引 URL,直到中断(检查 Thread.interrupted() 在每次迭代时返回 false)
  4. 将每个任务提交给第 1 步中创建的 executorService,并将返回的 Future 保存在列表中
  5. hibernate/等待,直到要索引的网址列表发生变化
  6. 取消 Future 实例列表中的每个 Future (cancel(true))
  7. 转到第 2 步。

关于java - 多线程应用程序,动态创建新线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6564941/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com