Java 在webapplication中管理资源';s多线程环境

Java 在webapplication中管理资源';s多线程环境,java,multithreading,web-applications,Java,Multithreading,Web Applications,你能建议一下下面的流程是否是线程安全的吗- Web应用程序获取请求->从请求中获取数据->处理它->写入临时文件->临时文件进入批处理,该批处理将数据插入数据库 我担心的是,当多个请求同时命中时,在临时文件上写入是否是线程安全的 我非常乐意接受任何建议 另外,web应用程序本身并没有插入数据,但批处理是因为批处理与db的接口经过了充分的验证和测试(类似于遗留应用程序)。如果您可以保证您的临时文件具有唯一的名称,并且每个请求都创建自己的临时文件,那么我认为它是线程安全的(当然,假设servlet中

你能建议一下下面的流程是否是线程安全的吗-

Web应用程序获取请求->从请求中获取数据->处理它->写入临时文件->临时文件进入批处理,该批处理将数据插入数据库

我担心的是,当多个请求同时命中时,在临时文件上写入是否是线程安全的

我非常乐意接受任何建议


另外,web应用程序本身并没有插入数据,但批处理是因为批处理与db的接口经过了充分的验证和测试(类似于遗留应用程序)。

如果您可以保证您的临时文件具有唯一的名称,并且每个请求都创建自己的临时文件,那么我认为它是线程安全的(当然,假设servlet中的处理也是线程安全的。)

如果您可以保证您的临时文件具有唯一的名称,并且每个请求都创建自己的临时文件,那么我会说它是线程安全的(当然,假设servlet中的处理也是线程安全的。)Java web应用程序服务器将传入的请求排队,并创建一个工作线程池来处理它们。应用程序服务器从池中分配一个线程来处理队列头的请求,因此用于处理该请求的代码从其角度看似乎是单线程的

但是服务器本身是多线程的,因为它使用一个线程池。由不同线程共享的数据或文件不是线程安全的。因此,您必须同步处理写入文件的代码部分,或者在写入操作期间锁定它


如果临时文件未共享,则不会出现问题。是否为每个请求创建一个文件?

Java web应用程序服务器将传入的请求排队,并创建一个工作线程池来处理它们。应用程序服务器从池中分配一个线程来处理队列头的请求,因此用于处理该请求的代码从它的角度来看,t似乎是单线程的

但是服务器本身是多线程的,因为它使用一个线程池。由不同线程共享的数据或文件不是线程安全的。因此,您必须同步处理写入文件的代码部分,或者在写入操作期间锁定它


如果临时文件未共享,则不会出现问题。是否为每个请求创建一个文件?

如果每个请求中的临时文件都是相同的文件,则使用同步方法写入该临时文件。这与将线程安全写入套接字非常类似。

如果使用同步方法写入临时文件,则写入的临时文件与在每一个请求中都使用ile。这与将线程安全写入套接字非常相似