aboutsummaryrefslogtreecommitdiffstats
path: root/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/OneTimeRunnable.java
blob: eb83d3d7d03e89c770e84ee116754c3d4c7c87ad (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.server.jetty;

import java.util.concurrent.atomic.AtomicBoolean;

/**
 * @author Tony Vaagenes
 */
public class OneTimeRunnable {
    private final Runnable runnable;
    private final AtomicBoolean hasRun = new AtomicBoolean(false);

    public OneTimeRunnable(Runnable runnable) {
        this.runnable = runnable;
    }

    public void runIfFirstInvocation() {
        boolean previous = hasRun.getAndSet(true);
        if (!previous) {
            runnable.run();
        }
    }
}