81,122
社区成员




package com.zjf.spb.demo.controller;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
import org.springframework.util.StringUtils;
public class Lockservice
{
public static volatile Map<Integer, String> map = new HashMap<Integer, String>();
public final static Lock lock = new ReentrantLock();
public final static Condition canget = lock.newCondition();
public final static ReadWriteLock lock2 = new ReentrantReadWriteLock();
public static void setvalue(Integer id, String value)
{
try
{
lock.lock();
map.put(id, value);
canget.signalAll();
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
lock.unlock();
}
}
public static String getValue(Integer id)
{
String vlaue = null;
try
{
lock.lock();
while (true)
{
vlaue = map.get(id);
System.out.println("id=" + id + ", value=" + vlaue);
if (StringUtils.isEmpty(vlaue))
{
System.out.println("未获取到id=" + id + "的值,继续尝试获取");
canget.await();
}
else
{
System.out.println("获取到id=" + id + "的值,退出");
break;
}
}
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
lock.unlock();
}
return vlaue;
}
}