【代碼塊】防併發、防重複執行

有些時候,防止一段代碼塊正在執行的時候重複執行,或防止其併發執行,可採用以下手段進行限制:

手段一:

private volatile AtomicBoolean working = new AtomicBoolean(false);

    void doSomeThing() {
        if (working.getAndSet(true)) return;
        try {
            //doSomeThings();
        } catch (Exception e) {

        } finally {
            working.getAndSet(false);
        }
    }

    boolean isDoSomeThing() {
        return working.get();
    }

手段二:

private ReentrantLock lock = new ReentrantLock();

    void doSomeThing() {
        if (!lock.tryLock()) return;
        try {
            //doSomeThings();
        } catch (Exception e) {

        } finally {
            lock.unlock();
        }
    }

    boolean isDoSomeThing() {
        return lock.isLocked();
    }



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章