我有这个问题。为了创建单个http请求的响应,我必须执行几个可以同时执行的任务。我可以在Executor(线程池)中执行这些任务,但后来我不得不担心我的Web应用程序中的并发(同步)。有没有更好的方法来解决这个问题而不使用线程池?
谢谢,
答案 0 :(得分:1)
使用Executor处理线程同步的混乱细节,因此它应该是同时执行多个任务的最简单方法。您只需向执行程序提交作业并等待它们完成。
如果这些后台任务访问某些共享资源(尤其是内存中的数据结构),则需要协调此访问。最简单的方法是避免共享资源,但如果可以,那取决于您实际需要做什么。如果必须具有共享资源,则可以使用Java同步原语或并发包中的其他一些实用程序。
您不能拥有多个线程而不考虑同步。 这里没有银弹。
(顺便说一句,即使没有多个线程用于单个Web请求,您也可能必须考虑Web应用程序中的线程问题,因为同一个Web服务器可能同时遇到多个请求)。