EhCacheLock无法在String键上获取写锁定,当键是唯一时该事件

时间:2015-03-02 09:35:07

标签: ehcache

而不是锁定我的对象..我通过连接它的一些字符串属性形成一个字符串键...然后我使用消息摘要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

我也确保释放锁定锁。

1 个答案:

答案 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)时应立即失败。

(我希望你能得到想法。)