我有一个同时处理大量请求的 Web 应用程序。在应用程序的一个 API 方法中,我有一个方法 - methodA()。在这个方法中,我调用了另一个方法 - doSomething()。我有一个场景,我希望对 methodA() 的第一次调用将在单独的线程中运行 doSomething() 方法,但此时,如果已调用对 methodA() 的另一个调用,则不要运行 doSomething( ) 方法(因为它仍在由另一个线程运行)并继续 methodA() 的其余部分。
methodA() {
.
.
doSomething() // In a new thread
.
.
}
我考虑过使用原子布尔值作为标志,但我不确定这是否是最好的主意。
private final AtomicBoolean isOn = new AtomicBoolean(false);
methodA() {
.
.
if (isOn.compareAndSet(false, true)) {
Runnable doSomethingRunnableTask = () -> {
doSomething(); };
Thread t1 = new Thread(doSomethingRunnableTask);
t1.start();
isOn.set(false);
}
谢谢!
UYOU
慕容3067478
不负相思意
相关分类