當前位置: 首頁>>代碼示例>>Java>>正文


Java Signal.handle方法代碼示例

本文整理匯總了Java中sun.misc.Signal.handle方法的典型用法代碼示例。如果您正苦於以下問題:Java Signal.handle方法的具體用法?Java Signal.handle怎麽用?Java Signal.handle使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在sun.misc.Signal的用法示例。


在下文中一共展示了Signal.handle方法的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。

示例1: onSignal

import sun.misc.Signal; //導入方法依賴的package包/類
/**
 * Set up a Un*x signal handler to call {@link #restartApplication(Runnable, boolean)} when the signal
 * is received.
 *
 * @param signalName Name of the signal.
 * @param onExit     A runnable to perform on exit.
 * @param withNewest If a jar, should we find the newest?
 * @param pidFile the name of a file to write the process id too
 */
public static void onSignal(final String signalName, Runnable onExit, boolean withNewest, String pidFile) {
    Signal sig = new Signal(signalName);
    Signal.handle(sig, signal -> {
        restartApplication(onExit, withNewest);
    });
    if (pidFile != null) {
        final Path pidFilePath = Paths.get(pidFile);
        try {
            Files.deleteIfExists(pidFilePath);
            Files.createFile(pidFilePath);
            Files.write(pidFilePath, String.format("%d\n", getProcessPid()).getBytes());
        } catch (IOException e) {
            throw new UncheckedIOException("Can not create pid file: " + pidFile, e);
        }
    }
}
 
開發者ID:nwillc,項目名稱:reloader,代碼行數:26,代碼來源:Reloader.java

示例2: initializeBasicFeatures

import sun.misc.Signal; //導入方法依賴的package包/類
/**
 * Initializes basic features of the VM, including all of the VM schemes and the trap handling mechanism.
 * It also parses some program arguments that were not parsed earlier.
 */
protected final void initializeBasicFeatures() {
    MaxineVM vm = vm();
    vm.phase = MaxineVM.Phase.STARTING;

    // Now we can decode all the other VM arguments using the full language
    if (VMOptions.parseStarting()) {
        VMLog.checkLogOptions();

        vmConfig().initializeSchemes(MaxineVM.Phase.STARTING);
        if (Heap.ExcessiveGCFrequency != 0) {
            new ExcessiveGCDaemon(Heap.ExcessiveGCFrequency).start();
        }
        if (Deoptimization.DeoptimizeALot != 0 && Deoptimization.UseDeopt) {
            new DeoptimizeALot(Deoptimization.DeoptimizeALot).start();
        }
        // Install the signal handler for dumping threads when SIGHUP is received
        Signal.handle(new Signal("QUIT"), new PrintThreads(false));
    }
}
 
開發者ID:beehive-lab,項目名稱:Maxine-VM,代碼行數:24,代碼來源:JavaRunScheme.java

示例3: testRaiseNoConsumer

import sun.misc.Signal; //導入方法依賴的package包/類
@Test
static void testRaiseNoConsumer() {
    Signal signal = new Signal("INT");
    SignalHandler orig = null;
    try {
        orig = Signal.handle(signal, SignalHandler.SIG_DFL);
        printf("oldHandler: %s%n", orig);
        if (orig == SignalHandler.SIG_IGN) {
            // SIG_IGN for TERM means it cannot be handled
            return;
        }
        Signal.raise(signal);
        Assert.fail("Should have thrown IllegalArgumentException");
    } catch (IllegalArgumentException iae) {
        printf("IAE message: %s%n", iae.getMessage());
    } finally {
        // Restore original signal handler
        if (orig != null && signal != null) {
            Signal.handle(signal, orig);
        }
    }
}
 
開發者ID:AdoptOpenJDK,項目名稱:openjdk-jdk10,代碼行數:23,代碼來源:SunMiscSignalTest.java

示例4: checkLastHandler

import sun.misc.Signal; //導入方法依賴的package包/類
@Test()
static void checkLastHandler() {
    if (RUNNING_WITH_Xrs) {
        return;
    }
    Signal signal = new Signal("TERM");
    Handler h1 = new Handler();
    Handler h2 = new Handler();
    SignalHandler orig = Signal.handle(signal, h1);
    if (orig == SignalHandler.SIG_IGN) {
        // SIG_IGN for TERM means it cannot be handled
        return;
    }

    try {
        SignalHandler prev = Signal.handle(signal, h2);
        Assert.assertSame(prev, h1, "prev handler mismatch");

        prev = Signal.handle(signal, h1);
        Assert.assertSame(prev, h2, "prev handler mismatch");
    } finally {
        if (orig != null && signal != null) {
            Signal.handle(signal, orig);
        }
    }
}
 
開發者ID:AdoptOpenJDK,項目名稱:openjdk-jdk10,代碼行數:27,代碼來源:SunMiscSignalTest.java

示例5: InteractiveShellRunner

import sun.misc.Signal; //導入方法依賴的package包/類
public InteractiveShellRunner(@Nonnull StatementExecuter executer,
                              @Nonnull TransactionHandler txHandler,
                              @Nonnull Logger logger,
                              @Nonnull StatementParser statementParser,
                              @Nonnull InputStream inputStream,
                              @Nonnull File historyFile,
                              @Nonnull UserMessagesHandler userMessagesHandler) throws IOException {
    this.userMessagesHandler = userMessagesHandler;
    this.currentyExecuting = new AtomicBoolean(false);
    this.executer = executer;
    this.txHandler = txHandler;
    this.logger = logger;
    this.statementParser = statementParser;
    this.reader = setupConsoleReader(logger, inputStream);
    this.historian = FileHistorian.setupHistory(reader, logger, historyFile);

    // Catch ctrl-c
    Signal.handle(new Signal(INTERRUPT_SIGNAL), this);
}
 
開發者ID:neo4j,項目名稱:cypher-shell,代碼行數:20,代碼來源:InteractiveShellRunner.java

示例6: setup

import sun.misc.Signal; //導入方法依賴的package包/類
static void setup() {
if (handler != null) return;
SignalHandler sh = new SignalHandler() {
    public void handle(Signal sig) {
	Shutdown.exit(sig.getNumber() + 0200);
    }
};
handler = sh;
       try {
           Signal.handle(new Signal("INT"), sh);
           Signal.handle(new Signal("TERM"), sh);
       } catch (IllegalArgumentException e) {
           // When -Xrs is specified the user is responsible for
           // ensuring that shutdown hooks are run by calling
           // System.exit()
       }
   }
 
開發者ID:jgaltidor,項目名稱:VarJ,代碼行數:18,代碼來源:Terminator.java

示例7: renderOutput

import sun.misc.Signal; //導入方法依賴的package包/類
public void renderOutput(PrintStream out, OutputFormat outputFormat, boolean interactive)
{
    Thread clientThread = Thread.currentThread();
    SignalHandler oldHandler = Signal.handle(SIGINT, signal -> {
        if (ignoreUserInterrupt.get() || client.isClosed()) {
            return;
        }
        userAbortedQuery.set(true);
        client.close();
        clientThread.interrupt();
    });
    try {
        renderQueryOutput(out, outputFormat, interactive);
    }
    finally {
        Signal.handle(SIGINT, oldHandler);
        Thread.interrupted(); // clear interrupt status
    }
}
 
開發者ID:y-lan,項目名稱:presto,代碼行數:20,代碼來源:Query.java

示例8: startSignalHandler

import sun.misc.Signal; //導入方法依賴的package包/類
/**
 * <p>
 * startSignalHandler
 * </p>
 */
protected void startSignalHandler() {
	Signal.handle(new Signal("INT"), new SignalHandler() {

		private boolean interrupted = false;

		@Override
		public void handle(Signal arg0) {
			if (interrupted)
				System.exit(0);
			try {
				interrupted = true;
				if (process != null)
					process.waitFor();
			} catch (InterruptedException e) {
				logger.warn("",e);
			}
		}

	});
}
 
開發者ID:EvoSuite,項目名稱:evosuite,代碼行數:26,代碼來源:ExternalProcessHandler.java

示例9: setup

import sun.misc.Signal; //導入方法依賴的package包/類
static void setup() {
    if (handler != null) return;
    SignalHandler sh = new SignalHandler() {
        public void handle(Signal sig) {
            Shutdown.exit(sig.getNumber() + 0200);
        }
    };
    handler = sh;
    try {
        Signal.handle(new Signal("INT"), sh);
        Signal.handle(new Signal("TERM"), sh);
    } catch (IllegalArgumentException e) {
        // When -Xrs is specified the user is responsible for
        // ensuring that shutdown hooks are run by calling
        // System.exit()
    }
}
 
開發者ID:openjdk,項目名稱:jdk7-jdk,代碼行數:18,代碼來源:Terminator.java

示例10: setup

import sun.misc.Signal; //導入方法依賴的package包/類
static void setup() {
    if (handler != null) return;
    SignalHandler sh = new SignalHandler() {
        public void handle(Signal sig) {
            Shutdown.exit(sig.getNumber() + 0200);
        }
    };
    handler = sh;
    try {
        Signal.handle(new Signal("HUP"), sh);
        Signal.handle(new Signal("INT"), sh);
        Signal.handle(new Signal("TERM"), sh);
    } catch (IllegalArgumentException e) {
        // When -Xrs is specified the user is responsible for
        // ensuring that shutdown hooks are run by calling
        // System.exit()
    }
}
 
開發者ID:openjdk,項目名稱:jdk7-jdk,代碼行數:19,代碼來源:Terminator.java

示例11: handleShutdown

import sun.misc.Signal; //導入方法依賴的package包/類
public static boolean handleShutdown(Class<?> clazz, String[] args,
    final AtomicBoolean running) {
    if (args != null && args.length > 0 && args[0].equals("stop")) {
        running.set(false);
        return true;
    }

    SignalHandler handler = new SignalHandler() {
        @Override
        public void handle(Signal signal) {
            running.set(false);
        }
    };

    String command = System.getProperty("sun.java.command");
    if (command == null || command.isEmpty()) {
        return false;
    }

    if (clazz.getName().equals(command.split(" ")[0])) {
        Signal.handle(new Signal("INT"), handler);
        Signal.handle(new Signal("TERM"), handler);
    }

    return false;
}
 
開發者ID:adohe,項目名稱:Tunnel,代碼行數:27,代碼來源:Conf.java

示例12: addUnixSignalStatusHandle

import sun.misc.Signal; //導入方法依賴的package包/類
private static void addUnixSignalStatusHandle() {
    Signal.handle(new Signal("USR2"), new SignalHandler() {
        @Override
        public void handle(Signal sig) {
            System.err.print("::: "+new Date()+" ::: RECIVE SIGNAL "+sig+" ::: Internal Server Status: ");
            if(sig!=null){
                if(status==STATUS_STARTING){
                    System.err.println("'STATUS_STARTING' :::");
                }else if(status==STATUS_RUNNING){
                    System.err.println("'STATUS_RUNNING' :::");
                }else if(status==STATUS_STOPING){
                    System.err.println("'STATUS_STOPING' :::");
                }else{
                    System.err.println("'STATUS_UNKNOWN' :::");
                }
            }
            System.err.flush();
        }
    });
}
 
開發者ID:eddi888,項目名稱:ultra-pi2c,代碼行數:21,代碼來源:Server.java

示例13: SentenceSourceIndexer

import sun.misc.Signal; //導入方法依賴的package包/類
SentenceSourceIndexer(Directory dir, Language language, int maxSentences, Analyzer analyzer) {
  if (analyzer == null) {
    this.indexer = new Indexer(dir, language);
  } else {
    this.indexer = new Indexer(dir, language, analyzer);
  }
  this.indexer.setLowercaseOnly(LC_ONLY);
  this.maxSentences = maxSentences;
  Signal.handle(new Signal("HUP"), signal -> {
    stopped = true;
    System.out.println("----- Got SIGHUP, will commit and exit ----");
    try {
      indexer.commit();
      System.out.println("----- commit done, will exit now ----");
    } catch (Exception e) {
      e.printStackTrace();
    }
    System.exit(1);
  });
}
 
開發者ID:languagetool-org,項目名稱:languagetool,代碼行數:21,代碼來源:SentenceSourceIndexer.java

示例14: AbstractSignalHandler

import sun.misc.Signal; //導入方法依賴的package包/類
public AbstractSignalHandler() {
    // kill命令
    Signal termSignal = new Signal("TERM");
    Signal.handle(termSignal, this);
    // ctrl+c命令
    Signal intSignal = new Signal("INT");
    Signal.handle(intSignal, this);
}
 
開發者ID:BriData,項目名稱:DBus,代碼行數:9,代碼來源:AbstractSignalHandler.java

示例15: main

import sun.misc.Signal; //導入方法依賴的package包/類
public static void main(String[] args) {
    StatMessageSender sender = new StatMessageSender();

    // kill命令
    Signal termSignal = new Signal("TERM");
    Signal.handle(termSignal, sender);
    // ctrl+c命令
    Signal intSignal = new Signal("INT");
    Signal.handle(intSignal, sender);

    sender.run();
}
 
開發者ID:BriData,項目名稱:DBus,代碼行數:13,代碼來源:StatMessageSender.java


注:本文中的sun.misc.Signal.handle方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。