Files
mercury/java/runtime/MercuryRuntime.java
Mark Brown d465fa53cb Update the COPYING.LIB file and references to it.
Discussion of these changes can be found on the Mercury developers
mailing list archives from June 2018.

COPYING.LIB:
    Add a special linking exception to the LGPL.

*:
    Update references to COPYING.LIB.

    Clean up some minor errors that have accumulated in copyright
    messages.
2018-06-09 17:43:12 +10:00

79 lines
2.1 KiB
Java

//
// Copyright (C) 2014, 2018 The Mercury Team
// This file is distributed under the terms specified in COPYING.LIB.
//
package jmercury.runtime;
/**
* Interface to the Mercury Runtime System for Java code.
*
* No instance of this class is ever created, all its members and methods
* are static.
*/
public class MercuryRuntime
{
/**
* Private constructor.
* This private constructor doesn't do anything and isn't called by
* anyone. It exists only to prevent people from creating an instance.
*/
private MercuryRuntime() {
}
private static MercuryThreadPool thread_pool = null;
/**
* Return the thread pool, initialising it if required.
* This does not start the thread pool. It is started either when
* startup() is called or automatically when the first task is
* submitted.
*/
public static synchronized MercuryThreadPool getThreadPool()
{
if (thread_pool == null) {
thread_pool = new MercuryThreadPool(
JavaInternal.getOptions().getNumProcessors());
}
return thread_pool;
}
/**
* Retrieve the exit status stored in the I/O state.
*/
public static int getExitStatus() {
return JavaInternal.exit_status;
}
/**
* Finalise the runtime system.
* This _must_ be called at the end of any program. It runs
* finalisers and stops the thread pool. This will wait for the thread
* pool to shutdown (unless abort=true).
*/
public static void finalise(boolean abort) {
MercuryThreadPool pool;
pool = getThreadPool();
if (!abort) {
JavaInternal.run_finalisers();
}
pool.shutdown(abort);
if (!abort) {
pool.waitForShutdown();
}
}
/**
* Finalise the runtime system.
* This _must_ be called at the end of any program. It runs
* finalisers and stops the thread pool. This will wait for the thread
* pool to shutdown.
* This is the same as calling finalise(false)
*/
public static void finalise() {
finalise(false);
}
}