【代码块】防并发、防重复执行

有些时候,防止一段代码块正在执行的时候重复执行,或防止其并发执行,可采用以下手段进行限制:

手段一:

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();
    }



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