方便访问当前线程:正如你所提到的,继承这种方式下,可以直接使用this关键字,而无需调用Thread.currentThread()方法来获取当前线程实例。这是因为this实际上指向的是当前正在执行的对象,即新创建的MyThread对象。 举例说明
时间: 2024-09-21 14:01:12 浏览: 45
举个例子,假设我们有这样一个继承自`Thread`的类`MyThread`,它有一个内部变量用于记录线程状态:
```java
public class MyThread extends Thread {
private String threadStatus;
public MyThread(String status) {
this.threadStatus = status;
}
@Override
public void run() {
// 在这里可以直接使用 this 获取当前线程实例,并操作threadStatus
threadStatus = "Running"; // 更新状态为"Running"
System.out.println("Current thread status: " + this.threadStatus); // 输出当前线程状态
}
}
// 使用示例
public static void main(String[] args) {
MyThread myThread = new MyThread("Initial");
myThread.start(); // 启动线程
// 此时虽然myThread还没有运行,但如果我们直接访问this.threadStatus,会得到错误,因为尚未设置
// System.out.println(myThread.threadStatus); // 输出:Initial (未初始化)
// 线程开始执行后,可以直接使用 this 访问并更新状态
}
```
在这个例子中,当我们调用`myThread.threadStatus`时,在主线程中,`this`确实指代的是`MyThread`实例,所以在`run()`方法中可以直接操作`threadStatus`,而无需每次都获取当前线程。但在主线程中直接访问可能会出错,因为`threadStatus`是在`run()`方法内部初始化的,只有当线程真正执行时才会生效。
阅读全文