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


Java Signal類代碼示例

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


Signal類屬於sun.misc包,在下文中一共展示了Signal類的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: handle

import sun.misc.Signal; //導入依賴的package包/類
@Override
public void handle(Signal signal) {
    if (signalCount == 0) {
        System.out.println("Terminating from signal");
        if (server != null) {
            server.initiateShutdown();
        } else {
            System.out.println("...but no server found? Dazed, confused and doing nothing.");
        }
        System.out.println("A second signal will trigger standard Forge shutdown, a third will trigger abrupt termination.");
    } else if (signalCount == 1) {
        System.out.println("Caught second signal, triggering Forge-standard shutdown.");
        FMLCommonHandler.instance().exitJava(1, false);
    } else {
        System.out.println("Caught third signal, triggering abrupt termination. Corruption is possible.");
        FMLCommonHandler.instance().exitJava(2, true);
    }
    signalCount++;
}
 
開發者ID:Baughn,項目名稱:signal-catcher,代碼行數:20,代碼來源:SignalCatcher.java

示例4: testEquals

import sun.misc.Signal; //導入依賴的package包/類
@Test(dataProvider = "supportedSignals")
static void testEquals(String name, IsSupported supported, CanRegister register,
                       CanRaise raise, Invoked invoked) {
    Object[][] data = supportedSignals();
    for (int i = 0; i < data.length; i++) {
        IsSupported otherSupported = (IsSupported) data[i][1];
        if (supported == IsSupported.NO || otherSupported == IsSupported.NO) {
            continue;
        }
        String otherName = (String) data[i][0];

        Signal sig1 = new Signal(name);
        Signal sig2 = new Signal(otherName);
        if (name.equals(otherName)) {
            Assert.assertEquals(sig1, sig2, "Equals failed; ");
            Assert.assertEquals(sig1.hashCode(), sig2.hashCode(), "HashCode wrong; ");
        } else {
            Assert.assertNotEquals(sig1, sig2, "NotEquals failed; ");
            Assert.assertNotEquals(sig1.hashCode(), sig2.hashCode(), "HashCode wrong; ");
        }
    }
}
 
開發者ID:AdoptOpenJDK,項目名稱:openjdk-jdk10,代碼行數:23,代碼來源:SunMiscSignalTest.java

示例5: 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

示例6: 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

示例7: handle

import sun.misc.Signal; //導入依賴的package包/類
/**
 * Provided as part of the signal handling interface. Calls rotate().
 */
@Override
public void handle ( Signal arg0 )
{
	final String signame = arg0.getName ();
	if ( signame.equals ( fSignal ) )
	{
		log.info ( "Received signal " + arg0 + "; rotating." );
		rotate ();
		log.info ( "Log rotation complete." );
	}
	else
	{
		log.info ( "Received signal " + arg0 + "; ignored." );
	}
}
 
開發者ID:att,項目名稱:dmaap-framework,代碼行數:19,代碼來源:ExternalLogRollInterface.java

示例8: handle

import sun.misc.Signal; //導入依賴的package包/類
@Override
public void handle(Signal signal) {
	try {
		for (Server server : servers) {
			if (server != null) {
				server.stop();
				logger.info(server.getClass().getSimpleName() + " is stopped...");

				while (server.running()) {
					try {
						Thread.sleep(100L);
					} catch (InterruptedException e) { // ignore
					}
				}
			}
		}
	} finally {
		countDownLatch.countDown();

		if (signalHandler != SIG_DFL && signalHandler != SIG_IGN) {
			signalHandler.handle(signal);
		}
	}
}
 
開發者ID:iceize,項目名稱:netty-http-3.x,代碼行數:25,代碼來源:ServerSignalHandler.java

示例9: 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

示例10: handle

import sun.misc.Signal; //導入依賴的package包/類
/**
 * Catch Ctrl-C from user and handle it nicely
 *
 * @param signal to handle
 */
@Override
public void handle(final Signal signal) {
    // Stop any running cypher statements
    if (currentyExecuting.get()) {
        executer.reset();
    } else {
        // Print a literal newline here to get around us being in the middle of the prompt
        logger.printError(
                AnsiFormattedText.s().colorRed()
                        .append("\nInterrupted (Note that Cypher queries must end with a ")
                        .bold().append("semicolon. ").boldOff()
                        .append("Type ")
                        .bold().append(Exit.COMMAND_NAME).append(" ").boldOff()
                        .append("to exit the shell.)")
                        .formattedString());
        // Clear any text which has been inputted
        resetPrompt();
    }
}
 
開發者ID:neo4j,項目名稱:cypher-shell,代碼行數:25,代碼來源:InteractiveShellRunner.java

示例11: testSignalHandleOutsideExecution

import sun.misc.Signal; //導入依賴的package包/類
@Test
public void testSignalHandleOutsideExecution() throws Exception {
    // given
    InputStream inputStream = new ByteArrayInputStream("".getBytes());
    InteractiveShellRunner runner = new InteractiveShellRunner(cmdExecuter, txHandler, logger,
            new ShellStatementParser(), inputStream, historyFile, userMessagesHandler);

    // when
    runner.handle(new Signal(InteractiveShellRunner.INTERRUPT_SIGNAL));

    // then
    verifyNoMoreInteractions(cmdExecuter);
    verify(logger).printError("@|RED \nInterrupted (Note that Cypher queries must end with a |@" +
            "@|RED,BOLD semicolon. |@" +
            "@|RED Type |@@|RED,BOLD :exit|@@|RED,BOLD  |@" +
            "@|RED to exit the shell.)|@");
}
 
開發者ID:neo4j,項目名稱:cypher-shell,代碼行數:18,代碼來源:InteractiveShellRunnerTest.java

示例12: testSignalHandleDuringExecution

import sun.misc.Signal; //導入依賴的package包/類
@Test
public void testSignalHandleDuringExecution() throws Exception {
    // given
    BoltStateHandler boltStateHandler = mock(BoltStateHandler.class);
    FakeInterruptableShell fakeShell = spy(new FakeInterruptableShell(logger, boltStateHandler));
    InputStream inputStream = new ByteArrayInputStream("RETURN 1;\n".getBytes());
    InteractiveShellRunner runner = new InteractiveShellRunner(fakeShell, fakeShell, logger,
            new ShellStatementParser(), inputStream, historyFile, userMessagesHandler);

    // during
    Thread t = new Thread(runner::runUntilEnd);
    t.start();

    // wait until execution has begun
    while (!t.getState().equals(Thread.State.TIMED_WAITING)) {
        Thread.sleep(100L);
    }

    // when
    runner.handle(new Signal(InteractiveShellRunner.INTERRUPT_SIGNAL));

    // then
    verify(fakeShell).execute("RETURN 1;");
    verify(fakeShell).reset();
    verify(boltStateHandler).reset();
}
 
開發者ID:neo4j,項目名稱:cypher-shell,代碼行數:27,代碼來源:InteractiveShellRunnerTest.java

示例13: 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

示例14: afterPropertiesSet

import sun.misc.Signal; //導入依賴的package包/類
@Override
public void afterPropertiesSet() throws Exception {
	if(LangUtils.isEmpty(graceKillProcessor)){
		return ;
	}
	
	AnnotationAwareOrderComparator.sort(graceKillProcessor);
	graceKillProcessor.stream().forEach(p->{
		p.getSignals().forEach(s->{
			if(logger.isWarnEnabled()){
				logger.warn("register kill signal {}...", s);
			}
			Signal.handle(new Signal(s), this);
		});
	});
}
 
開發者ID:wayshall,項目名稱:onetwo,代碼行數:17,代碼來源:GraceKillSignalHandler.java

示例15: handle

import sun.misc.Signal; //導入依賴的package包/類
@Override
public void handle(Signal signal) {
	if(logger.isWarnEnabled()){
		logger.warn("receive kill signal {}...", signal.getName());
	}
	if(LangUtils.isEmpty(graceKillProcessor)){
		return ;
	}
	final SignalInfo info = SignalInfo.builder()
								.name(signal.getName())
								.number(signal.getNumber())
								.build();
	graceKillProcessor.stream()
						.filter(p->p.getSignals().contains(info.getName()))
						.forEach(p->{
							logger.warn("start to execute GraceKillProcessor[{}] ...", p.getClass());
							try {
								p.handle(info);
							} catch (Exception e) {
								logger.error("execute GraceKillProcessor["+p.getClass()+"] error: ", e);
							}
							logger.warn("has executed GraceKillProcessor[{}] ...", p.getClass());
						});
}
 
開發者ID:wayshall,項目名稱:onetwo,代碼行數:25,代碼來源:GraceKillSignalHandler.java


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