private void idle()

in gflog-core/src/main/java/com/epam/deltix/gflog/core/idle/BackoffIdleStrategy.java [79:110]


    private void idle() {
        switch (state) {
            case WORKING:
                value = 0;
                state = SPINNING;
                // fallthrough

            case SPINNING:
                if (++value <= maxSpins) {
                    Util.onSpinWait();
                    break;
                }

                value = 0;
                state = YIELDING;
                // fallthrough

            case YIELDING:
                if (++value <= maxYields) {
                    Thread.yield();
                    break;
                }

                value = minParkPeriodNs;
                state = PARKING;
                // fallthrough

            case PARKING:
                LockSupport.parkNanos(value);
                value = Math.min(value << 1, maxParkPeriodNs);
        }
    }