java.lang.Thread - ¿de dónde viene threadStatus viene?

Frankie:

Por código fuente de Java tenemos que

// variable not written or updated anywhere on this class
private volatile int threadStatus = 0;

public State getState() {
    // get current thread state
    return sun.misc.VM.toThreadState(threadStatus);
}

¿Cómo y dónde está threadStatusactualizado?

La idea sería, finalmente, tratar de tejer en torno a la actualización de los métodos con AOP y tienen una devolución de llamada de threadStatuscambios.

TAlex:

En el código fuente OpenJDK en el archivo hotspot/src/share/vm/classfile/javaClasses.cpppuede ver la siguiente código:

// Write the thread status value to threadStatus field in java.lang.Thread java class.
void java_lang_Thread::set_thread_status(oop java_thread,
                                         java_lang_Thread::ThreadStatus status) {
  // The threadStatus is only present starting in 1.5
  if (_thread_status_offset > 0) {
    java_thread->int_field_put(_thread_status_offset, status);
  }
}

Parece que el estado es administrado en código nativo. Esto significa que no se puede interceptar su cambio de código java.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=168485&siteId=1
Recomendado
Clasificación