静态方法如何获取实例详细信息或执行特定于实例的操作



下面的代码显然不能编译

public class Machine {
  public int id;
  static Machine staticMethod() { return this; } //compilation error - "Cannot use this in a static context"
  maskId() {   }
}

所以不可能从staticMethod()
(1)获取特定于Machine Object
实例的信息(2)执行一个特定于Machine object

实例的操作

除非我错过了一些非常简单的东西。

Thread Class的静态方法如何处理特定线程的动作/信息?
下面是java docs Thread 中这些方法的签名

static Thread currentThread()//返回当前正在执行的线程对象的引用。static void dumpStack()//将当前线程的堆栈跟踪信息打印到标准错误流

我错过什么了吗?或者这些方法(或线程类)不同吗?像本地实现等等,但是能够确定调用实例。

Thread不同的,因为它处理的是核心JVM(通常是操作系统)构造。在OpenJDK中,它不仅是native,而且还注释了一个提示,说明它是内置在JRE本身中,而不是由外部库提供的。

线程可以请求;我是哪条线?在任何点。它不需要像大多数值那样将this作为参数传递给它。有一个static native方法,它给出了当前线程,从那里这个对象可以有实例方法调用。

我认为这是由调度程序完成的,这里我提到类结构(这是我的看法,它是如何工作的)

class Thread{
static currentThread();
}
Class Scheduler{
//it has queue of all threads and also has track on current running thread 
//queue = {Thread1,Thread2,Thread3,Thread4,Thread5}
// let thread3 is running, whenever a call to Thread3.currentThread come up 
//some how jvm get instance of Thread3 from this queue and returns.
}

最新更新