All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.sviperll.environment.SignalWaiter Maven / Gradle / Ivy

/*
 * Copyright 2014 Victor Nazarov .
 */
package com.github.sviperll.environment;

import sun.misc.Signal;
import sun.misc.SignalHandler;

/**
 *
 * @author Victor Nazarov 
 */
public class SignalWaiter {
    private final Object lock = new Object();
    private final SignalWaiterHandler handler = new SignalWaiterHandler();
    private boolean doExit = false;

    public void waitForSignal() {
        synchronized (lock) {
            doExit = false;
            while (!doExit) {
                try {
                    lock.wait();
                } catch (InterruptedException ex) {
                }
            }
        }
    }

    public void expect(String signal) {
        Signal.handle(new Signal(signal), handler);
    }

    private class SignalWaiterHandler implements SignalHandler {
        @Override
        public void handle(Signal sig) {
            synchronized (lock) {
                doExit = true;
                lock.notify();
            }
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy