@Override
    public void cleanup() {
        // kill audio thread
        if (decoderThread.isAlive()) {
            decoderThread.interrupt();
            try {
                decoderThread.join();
            } catch (InterruptedException ex) {
                Thread.currentThread().interrupt(); // Re-interrupt thread
                logger.log(Level.WARNING, "Interrupted while waiting for audio thread to finish.", ex);
            }
        }

        // Destroy OpenAL context
        destroyOpenAL();
    }
Shuts down the audio decoder thread and destroys the OpenAL context.
jme3-core/src/main/java/com/jme3/audio/openal/ALAudioRenderer.java