synchronized reloadAllCaches(), , synchronized, reloadAllCaches().
, , synchronized . synchronized.
, synchronized :
public class Bar
{
public static void foo()
{
synchronized (Bar.class)
{
}
}
}
synchronized :
public class Bar
{
public void foo()
{
synchronized (this)
{
}
}
}
, .
ReentrantReadWriteLock. , Write-Lock. , , , .
, , . ReentrantReadWriteLock.
, :
public class CacheHelper
{
private static HashMap foos, bars;
private static java.util.concurrent.locks.ReadWriteLock lock = new java.util.concurrent.locks.ReentrantReadWriteLock();
public static Foo getFoo(int fooId)
{
lock.readLock().lock();
try {
} finally {
lock.readLock().unlock();
}
}
public static Bar getBar(int barId)
{
lock.readLock().lock();
try {
} finally {
lock.readLock().unlock();
}
}
public static void reloadAllCaches()
{
lock.writeLock().lock();
try {
} finally {
lock.writeLock().unlock();
}
}
}