多线程java休息服务

时间:2013-02-10 22:34:41

标签: java multithreading rest

我是java的新手,正在使用CXF JAXRS库构建java rest服务。

我希望该服务能够一次使用多个http请求。我该如何实现这一目标?

我是否需要在Web容器中托管服务?或者,即使我在没有(更喜欢)Web容器的情况下运行服务,我还能实现多线程吗?

由于

1 个答案:

答案 0 :(得分:0)

您必须修改应用程序的体系结构,以便同时处理多个请求,同时保存传入的请求以供将来处理。

实施Master-Worker模式,这将解决您的问题。 您可以按照以下步骤实现此模式(其方法不是算法):

1)根据您的意愿使用Java 5的Executor Framework或从Java 7加入Fork。假设我们正在使用java 5.

2)使用共享队列临时保存数据(比如一些工作对象)以备将来使用。我使用了线程安全的BlockingQueue。

3)创建一个主类,它将启动和停止多个实例(n)的工作者。收到新请求后,master会将数据放入工作对象中,并将此工作对象添加到队列中。在将工作对象添加到队列时,master将在此队列上调用notifyAll方法(以唤醒所有等待的工作者)。

4)创建一个工作线程类,它将侦听此队列(通过在其构造函数中引用共享队列)。从队列中逐个获取工作对象,直到队列为空。队列为空时将工作人员置于等待状态。当Master将在此队列上调用notifyAll方法时,它将再次运行。

如果您需要任何其他说明,请与我们联系。

执行者框架(非主工作者模式)的一个简单示例是here