如果我像这样声明一个单例 servlet
公共(public)静态类 SomeServlet 扩展 HttpServlet {.....
它给出了错误,表明在 NetBeans 中此处不允许修饰符 static。
请告诉我如何创建一次只允许一个客户端执行的单例 servlet。
提前致谢, 马埃斯
最佳答案
- static 与在任何时间点仅由一个线程执行无关。
- 您可以将静态类作为内部类,但由于第一点,这对您的问题没有帮助
- 如果我没记错的话,只有一个 servlet 实例化过,所以没有必要创建单例。 更新:我记错了正如 DefLog 指出的那样
- 因此同步方法(doGet、doPost、服务或您的实现方法)update: 不会达到目的。
根据您对问题的明确理解(无双关语意),我怀疑这是您应该选择的解决方案。而是改写您的问题,以便您使用您在问题的第一次修订中陈述的解决方案来陈述您试图解决的问题。
更新:请参阅对此答案的评论,了解为什么您真的不想被同步 迷住。您可能(例如)希望让多个 servlet 访问相同的功能一次一个。另外,如果在 servlet 级别进行同步,则会引入严重的缩放问题。这绝对是解决并发问题的错误地方。
关于java - 单例 servlet?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/574798/