高分求助:关于Servlet和ArrayList的问题

来源:百度知道 编辑:UC知道 时间:2024/05/18 09:41:18
我在一个Servlet中通过响应request向一个JAVA的单例模式类的Public ArrayList数组中加入了N个元素,我需要另外一个类从这个单例模式类的ArrayList中提取元素,最关键的是每提取一次,这个提取要挂起一段时间,同时又要保证Servlet中的request在收到数据后能够继续不停的向ArrayList中添加元素,请问该如何实现?

这其实是一个多线程互相协调同步的一个问题,你必须协调执行取动作的Servlet和执行放动作的Servlet能够协调工作。建议使用java.util.concurrent类型:
//Servlet 1
...
ConcurrentLinkedQueue q=new ConcurrentLinkedQueue<String>();
String input=request.getParameter("...");
q.add(input);
...

//Servlet 2
...
String obj=q.poll();
...

注意:Servlet1调用Servlet2时是使用转发方式,将控制权转让给servlet2

如果仅仅是提取,那么只需要在你所说的另外一个类设置刷新时间即可。不过你需要保证Servlet还在不停的插入,所以真的想取的话我想大概可以这样。

主要是采用遍历的方式,所以花费比较大:插入这一边每插入一个数据时开始执行遍历操作,直到出现null就在此处赋值。读取方面则不用考虑太多,反正无法知道插入那边的情况所以顺序循环读取就是了。