【发布时间】:2016-10-27 19:35:30
【问题描述】:
让我们考虑两个独立的 Alfresco Rhino-JavaScript 任务,它们竞争创建同一个文件夹:
var shared = companyhome.childByNamePath("shared");
var newFolderName = "folder-x";
var newFolder = shared.childByNamePath(newFolderName);
if (newFolder==null) {
java.lang.Thread.sleep(10000);//remove this line in second thread
newFolder = shared.createFolder(newFolderName);
if (newFolder==null){
logger.error("error: "+newFolderName);
} else {
logger.info("success: "+newFolderName);
}
} else {
logger.info("already exists: "+newFolderName);
}
如果我们在休眠状态下运行第一个脚本(10 秒),在不休眠状态下运行第二个脚本,那么:
- 第二个脚本将创建文件夹“folder-x”
- 第一个脚本会出现“文件或文件夹文件夹-x已经存在”异常
让我们想象一下许多竞争线程试图创建随机文件夹。 是否有信号量或原子操作之类的东西只阻止创建指定的文件夹(非阻止其他文件夹)?
【问题讨论】:
-
你只需要在睡眠之后而不是之前检查...
标签: javascript alfresco rhino