我正在編寫一個 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>();
// 訪問資源是線程安全的。
添加回答
舉報
0/150
提交
取消