📄 finalizerthread.java
字号:
// FinalizerThread.java -- Thread in which finalizers are run./* Copyright (C) 2001 Free Software Foundation This file is part of libgcj.This software is copyrighted work licensed under the terms of theLibgcj License. Please consult the file "LIBGCJ_LICENSE" fordetails. */package gnu.gcj.runtime;/** * @author Tom Tromey <tromey@redhat.com> * @date October 3, 2001 */public final class FinalizerThread extends Thread{ // Finalizers must be run in a thread with no Java-visible locks // held. This qualifies because we don't make the lock visible. private static final Object lock = new Object (); // This is true if the finalizer thread started successfully. It // might be false if, for instance, there are no threads on the // current platform. In this situation we run finalizers in the // caller's thread. private static boolean thread_started = false; public FinalizerThread () { super ("LibgcjInternalFinalizerThread"); setDaemon (true); } // This is called by the runtime when a finalizer is ready to be // run. It simply wakes up the finalizer thread. public static void finalizerReady () { synchronized (lock) { if (! thread_started) runFinalizers (); else lock.notify (); } } // Actually run the finalizers. private static native void runFinalizers (); public void run () { // Wait on a lock. Whenever we wake up, try to invoke the // finalizers. synchronized (lock) { thread_started = true; while (true) { try { lock.wait (); } catch (InterruptedException _) { // Just ignore it. It doesn't hurt to run finalizers // when none are pending. } runFinalizers (); } } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -