现在我有一个带有Gui的程序,它为我指定的url编制索引。我需要一次索引15个东西,我只是打开程序的15个窗口并单独输入我想索引的URL。然而,这15个url每小时左右更改一次...我有一个单独的程序,将这15个不断变化的URL存储在我的mysql数据库的表中。我可以从我的数据库中获取这些URL(我将它们存储在arraylist中)但我不知道如何多线程化我的应用程序,这样我就不必进行将url输入到我的应用程序中的手动工作。 / p>
我的问题:有人可以给我一个例子/链接我一个教程,我将如何为我的arraylist中的每个网址创建一个新线程(这个arraylist也会改变所以我需要创建一个新线程改变这个arraylist以及?)
我看过java网站的并发性和高级并发性但是并没有真正理解他们给出的例子(我还是一个初学程序员所以请耐心等待我)
希望我解释了我试图用足够的细节做什么 提前致谢
编辑:我索引的网址每隔几秒就会改变一次,这就是为什么我不认为我可以一个接一个地检查每个网址的方法,为什么我认为它需要多线程?第二次编辑(我相信这些家伙明白我的要求):
@Jon Storm有两个问题:1)获取URL列表2)访问所述URL。我会使URL fetcher单线程,然后发送到一个获取者的线程池。此调度程序还可以对待处理的提取等进行排队 - pst
@Jon Storm:请你更新一下你的问题来描述你想要更明确地做些什么?如果正确理解,您希望反复索引15个URL的列表,因为这些URL的页面内容每3秒更改一次。并且您希望通过从数据库中获取URL来更新每小时索引的URL列表。是对的吗? - JB Nizet答案 0 :(得分:2)
在我看来,您的问题不在于多线程,而在于从应用程序从数据库中提取URL的GUI中输入内容。
为什么不简单地重用应用程序内的GUI应用程序(即URL索引方法)中的类(或某些代码,如果不可能按原样重用这些类),该应用程序从数据库中获取URL
我的猜测是你可以在一个帖子中一个接一个地索引这15个URL。在尝试使用线程之前,我会尝试这样做。
程序看起来像这样:
编辑:
由于看起来URL必须反复索引,直到URL列表发生变化,我才会使用这个算法:
Executors.newCachedThreadPool()
Thread.interrupted()
在每次迭代时返回false)Future
保留在列表中Future
个实例列表的每个cancel(true)
(Future
)答案 1 :(得分:0)
SwingWorker
的here是一个不错的选择。