Files
mercury/java/runtime/MercuryRuntime.java
Zoltan Somogyi 8e45a89895 Use spaces, not tabs, in the Java and C# runtimes.
Add modelines to keep it that way.

Fix formatting, and english in comments.
2018-07-10 13:52:11 +02:00

79 lines
2.1 KiB
Java

// vim: ts=4 sw=4 expandtab ft=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);
}
}