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

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

手段一:

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



你可能感兴趣的:(【代码块】防并发、防重复执行)