簡體   English   中英

檢查AtomicBoolean並執行某些操作的最安全方法是什么?

[英]What is the safest way to check AtomicBoolean and perform something?

有什么方法可以使這種操作像一種操作(一種自定義原子操作)嗎?

 if (!isShutdownStarted.get()
            && !QUEUE.contains(request.getUserEmail())) {
        try {
            QUEUE.add(request.getUserEmail());
        } 
 //...
 }

其他線程中的代碼

@Override
public void contextDestroyed(ServletContextEvent servletContextEvent) {
    PaymentClient.isShutdownStarted.set(true);
    while (!PaymentClient.QUEUE.isEmpty());
}

您不能使用AtomicBoolean來使其他操作或操作序列原子化。

如果需要使本質上非原子的操作或序列原子化,則需要使用鎖定; 例如原始互斥鎖, Lock或類似的東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM