public boolean change_wait(boolean must_offered) {
        Lock.lock();
        try {
            if (this.size() <= 0) {
                Cond.await();
            }
        } catch (InterruptedException ex) {
            ex.printStackTrace();
        } finally {
            Lock.unlock();
        }
        if (!Offered && must_offered) {
            change_wait(true);
        }
        return Offered;
    }