而不是锁定我的对象..我通过连接它的一些字符串属性形成一个字符串键...然后我使用消息摘要512算法计算哈希。我试图锁定那把钥匙......
现在我尝试获取400个唯一密钥的密钥..但它无法锁定几个密钥......
现在根据我的不足,我应该锁定每个键,因为它们都是独一无二的。
我的缓存配置如下
Name = "CACHE_LOCK"
max element in memory = 100000
overflow to disk = false
eternal = false
time to live = 600 secs
time to ideal = 300 secs
当我想要锁定时,我正在给time_out = 0
我也确保释放锁定锁。
答案 0 :(得分:0)
bellow方法...
public void acquireLock(String key) {
String hash = generateHash(key);
Cache cache = getCache();
try {
boolean lockAcquired = cache.tryWriteLockOnKey(hash,TIME_OUT);
if (!lockAcquired)
{
throw new Exception(message);
}
} catch (InterruptedException e) {
throw new Exception(message);
}
Element element = cache.get(hash);
if (element == null)
{
cache.put(new Element(hash,new Object()));
}
}
获取缓存方法返回
Cache cache = new Cache(LOCK_CACHE,100000,false,false,600,300);
只初始化一次..
目的是...... 在并发环境中..当一个键通过连接对象的不同属性形成时,这些属性唯一地标识该对象。并且有可能同一时间处理这些属性的不同对象具有相同的值。避免这种..我正在使用ehCache ..所以当一个人试图锁定同一个键(超时为0)时应立即失败。
(我希望你能得到想法。)