下面的代码显然会不编译。
public class Machine {
public int id;
static Machine staticMethod() { return this; } //compilation error - "Cannot use this in a static context"
maskId() { }
}
因此 staticMethod()无法实现 (1)获取特定于机器对象的任何实例的信息 (2)执行特定于机器对象
的任何实例的操作除非我错过了一些非常简单的事情。
线程类的静态方法如何处理特定线程的操作/信息 以下是来自java docs Thread
的此类方法的签名static Thread currentThread()//返回对当前正在执行的线程对象的引用 static void dumpStack()//将当前线程的堆栈跟踪打印到标准错误流。
我有没有想念。或者这些方法(或Thread Class)是不同的。像Native实现等或者什么,但能够确定调用实例。
答案 0 :(得分:1)
Thread
类 不同,因为它处理核心JVM(通常是操作系统)构造。 In OpenJDK, it's not only native
but also annotated with a hint that says that it's built in to the JRE itself instead of provided by an external library.
答案 1 :(得分:0)
线程可以问;我是哪个线程?在任何时候。它并不像大多数值那样将它作为参数传递给它。有一个colour = class
static
方法给出当前线程,从那里这个对象可以调用实例方法。
答案 2 :(得分:0)
我认为它是由调度程序完成的, 在这里,我提到阶级结构(这是我的感知,它是如何工作的)
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.
}