springboot 对多线程和ehcache缓存的支持
@EnableAsync:
在配置类中通过加@EnableAsync开启对异步任务的支持
@Async:
在需要执行的方法上加@Async表明该方法是个异步方法,如果加在类级别上,则表明类所有的方法都是异步方法
countdownlatch 包
是一个非常实用的多线程控制工具类
# 可以看看源码:
# AbstractQueuedSynchronizer :AQS队列同步器
# Sync 内部类(同步器),继承AQS
private static final class Sync extends AbstractQueuedSynchronizer {
private static final long serialVersionUID = 4982264981922014374L;
Sync(int count) {
setState(count);
}
int getCount() {
return getState();
}
protected int tryAcquireShared(int acquires) {
return (getState() == 0) ? 1 : -1;
}
protected boolean tryReleaseShared(int releases) {
// 死循环,自旋
for (;;) {
int c = getState();
if (c == 0)
return false;
int nextc = c-1;
if (compareAndSetState(c, nextc))
return nextc == 0;
}
}
}
private final Sync sync;
public CountDownLatch(int count) {
if (count < 0) throw new IllegalArgumentException("count < 0");
this.sync = new Sync(count);
}