为了账号安全,请及时绑定邮箱和手机立即绑定

同步访问相同文件,并发访问不同文件

同步访问相同文件,并发访问不同文件

GCT1015 2023-03-02 15:16:06
我正在编写一个 servlet 程序来根据客户端的请求访问要写入的文件。该请求包含文件名。假设同时发出 3 个请求。如果其中两个请求同一个文件,则必须以同步方式访问该文件,即..,只有在完成对任何一个请求的服务后,才能为下一个请求提供服务。如果第三个请求也是同时发出的,请求不同的文件名,则它必须与另一个请求同时提供。如何处理这种同步和并发访问文件的情况?我试过使用同步块来访问文件。但这不允许并发访问具有不同文件名的请求。 public class FileServlet extends HttpServlet{ String FileName="";   public void service(HttpServletRequest req, HttpServletResponse res) throws IOException {     FileName = req.getParameter("file");    synchronized(FileName){                //writing on fileName    } }}在这里,所有请求的文件都以同步方式访问。但我希望以并发方式访问不同的文件。
查看完整描述

1 回答

?
慕的地6264312

TA贡献1817条经验 获得超6个赞

创建实现Thread类或扩展Runnable文件访问接口的类。然后,使用该类创建多个线程并调用join()每个线程并发执行所有任务。

或者你可以使用:

Map<Type, Type> map = new ConcurrentHashMap<Type, Type>();// 访问资源是线程安全的。


查看完整回答
反对 回复 2023-03-02
  • 1 回答
  • 0 关注
  • 43 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信