MySQL有一个方便的功能:
SELECT GET_LOCK("SomeName")
Run Code Online (Sandbox Code Playgroud)
这可用于为应用程序创建简单但非常具体的基于名称的锁.但是,它需要数据库连接.
我有很多情况,比如:
someMethod() {
// do stuff to user A for their data for feature X
}
Run Code Online (Sandbox Code Playgroud)
它没有意义的只是同步的这种方法,因为,例如,如果调用此方法对于在此期间用户B,用户B不需要等待用户A完成它开始之前,用户只能操作A和功能X组合需要等待.
使用MySql锁我可以做类似的事情:
someMethod() {
executeQuery("SELECT GET_LOCK('userA-featureX')")
// only locked for user A for their data for feature X
executeQuery("SELECT RELEASE_LOCK('userA-featureX')")
}
Run Code Online (Sandbox Code Playgroud)
由于Java锁定是基于对象的,因此我似乎需要创建一个新对象来表示此锁的情况,然后将其放在某个地方的静态缓存中,以便所有线程都可以看到它.锁定该情况的后续请求然后将锁定对象定位在高速缓存中并获取其锁定.我试图创建这样的东西,但锁缓存本身需要同步.此外,很难检测何时不再使用锁定对象,以便可以从缓存中删除锁定对象.
我查看了Java并发软件包,但没有什么能够处理这样的事情.有没有一种简单的方法来实现这一点,还是我从错误的角度看待这个?
编辑:
为了澄清,我不打算提前创建一个预定义的锁池,我想按需创建它们.我想的一些伪代码是:
LockManager.acquireLock(String name) {
Lock lock;
synchronized (map) {
lock = map.get(name);
// doesn't exist yet - create and store
if(lock == null) {
lock = new Lock();
map.put(name, lock);
}
}
lock.lock();
}
LockManager.releaseLock(String name) …Run Code Online (Sandbox Code Playgroud) Eclipse(Helios)偶尔会将有效的JSP内容标记为有错误.当我使用<c:if>标签时,它似乎经常会中断.例如,在仅包含此内容的JSP中:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<body>
<c:if test="${1 == 1}">
something
</c:if>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
编译后,"问题"选项卡中显示以下错误:
代码运行正常.对JSP的验证是否有问题,我是否遗漏了一些明显的问题,或者这表明某些内容未正确设置.
在Servlet中,我在StringBuilder中构建了大量的HTML内容,最后需要将其写入响应的PrintWriter.为了使用PrintWriter,它必须首先调用StringBuilder的toString()方法以将内容作为String获取.但这不必要地重复了内容.是否有某种方法直接从StringBuilder写入,因为它已经持有内容?
PrintWriter可以接受CharSequence,但文档声明它调用CharSequence的toString(),所以它并没有真正帮助.
我能看到的唯一明确的方法是使用StringBuilder的charAt(i)方法一次获取和写入一个字符,但这会是一个改进吗?
在我的Vaadin应用程序中,servletInitialized()要调用我的servlet类中的方法来启动我的应用程序,我必须通过浏览器至少对Web应用程序URL进行一次请求.
我正在使用Intellij IDEA,我正在使用IDEA的Tomcat Server运行配置在本地tomcat实例中启动我的Web应用程序.
是否可以在部署war文件后立即启动servlet,而无需发出请求?
我有一个像这样的数组[1,1,1,1,2,2,2,3,3],我想将其转换为[1,2,3,1,2,3,1,1]使用jQuery.我没有代码也不知道我该怎么做.
java ×4
servlets ×2
eclipse ×1
javascript ×1
jsp ×1
locking ×1
printwriter ×1
sequence ×1
sorting ×1
tomcat ×1
vaadin ×1
validation ×1