如何获得页面之前线程响应得到呈现

如何获得页面之前线程响应得到呈现

问题描述:

我都需要文件操作的应用程序,需要尽可能同时如何获得页面之前线程响应得到呈现

  1. 如果用户试图读取一个文件,其他用户不能执行写操作完成使用Runnab

    创建的线程:

  2. 如果用户尝试写入文件,其它用户不能执行施加的读取操作

业务逻辑乐接口并添加同步的读法读从远程位置属性文件并付诸会话/请求对象

  • 问题:启动一个新的线程响应拿完(因为线程是独立的执行路径)。所以属性值不可用

如何在页面显示之前获得线程响应?我听说我们可以使用Callable Interface,请分享适合这种情况的最佳方法。

+0

您使用弹簧还是直线小服务器? – efekctive

+0

正在使用纯Servlet,没有框架 –

+1

您可以使用Runnable共享代码吗?我想你需要将响应作为参数传递给线程处理它,如果我理解正确的话。但是如果你分享一些代码,它会更清晰。 – KernelMode

以这种方式在servlet中创建一个线程(启动Runnable并由JVM直接运行它)是完全没有意义的,并且不建议出于内存泄漏和非托管上下文的考虑。

这是完全自然的,你得到未定义/不稳定状态的请求/会话上下文由新线程。

由于线程异步启动,servlet /服务器上下文继续工作并响应客户端,并且请求上下文不再有效。

您可以通过互斥体来实现它,因为默认情况下,servlet上下文是多线程的,并且您可能永远也不会以这种方式运行线程,如果这样做,您可以通过会话上下文侦听器处理事件并防止任何可能的内存泄漏。

您可以在锁定相关上下文(文件)时等待(阻止)响应,但这不合逻辑。或者通知用户所请求的文件被锁定,因为另一个读/写操作。
当然,你需要一个类似于推式的方法(如websockets)或替代方法(通过ajax检查状态或重新加载)来检查最新的相关上下文状态。

而最合乎逻辑的方法是,您需要在队列模式下执行此操作,并确保文件的部分需要更改才符合最新状态。