java中的多线程处理

时间:2011-04-12 12:39:46

标签: java multithreading

我遇到了严重的问题。我发送一个请求到服务器,其中包含一些URL作为其数据。如果我解释它,就像我有一个文件,按顺序包含一些URL我必须使用线程读取这些顺序数据。现在的问题是有十万个URL,我必须在特定时间内发送服务器中的每个URL(假设30秒)。因此我必须创建将在所需时间内完成任务的线程。但是我必须以这样的方式读取文件,如果第一个线程服务前100个URL,那么第二个线程将服务于下一个100个URL,并且以相同的方式也是其他线程。我在套接字编程中这样做,所以有我一次只能使用一个端口。那么如何解决这个问题呢。给我一个简单明了的想法,如果可能的话也给我一个例子。

先谢谢

2 个答案:

答案 0 :(得分:2)

简单明了(如果我理解你的问题):你可以使用LinkedList作为队列。从文件中读入1,000个URL并将它们放入列表中。生成您的线程,然后从列表中拉出(并删除)下一个100个URL。 LinkedList虽然不是线程安全的,但您必须自己同步访问。

答案 1 :(得分:0)

您可以研究的一件事是fork / join框架。 java教程解释这一点的方式是:“它专为工作而设计,可以递归地分成更小的部分。目标是使用所有可用的处理能力使你的应用程序快速变坏”。那么你真正需要做的就是弄清楚如何分解你的任务。

http://download.oracle.com/javase/tutorial/essential/concurrency/forkjoin.html

你可以在http://g.oswego.edu/dl/concurrency-interest/

找到这个罐子