1.自定义线程类 MyThread 2.在主线程中启动 MyThread 线程 3.通过 MyThread 线程对象调用 sleep 方法 问:sleep方法休眠的是 主线程 还是 MyThread线程,并用代码说明
时间: 2024-09-20 08:08:13 浏览: 41
Java线程调度之线程休眠用法分析
自定义线程类 `MyThread` 是一个继承自 `java.lang.Thread` 或实现 `java.lang.Runnable` 接口的类,它有自己的生命周期和线程执行流程。当你创建一个 `MyThread` 的实例并启动它时,实际上是在主线程中创建了一个新的线程来运行该类里的 run() 方法。
在主线程中启动 `MyThread` 线程,你可以这样做:
```java
// 创建 MyThread 类的一个实例
MyThread myThread = new MyThread();
// 启动线程
myThread.start();
```
这里的 `start()` 方法会使得 `MyThread` 线程独立于主线程执行。`MyThread` 类需要覆盖 `run()` 方法,这个方法就是新线程实际执行的任务。
`MyThread` 类可以包含一个 `sleep()` 方法,例如:
```java
class MyThread extends Thread {
@Override
public void run() {
try {
// 使用 sleep() 方法让当前线程暂停指定时间
Thread.sleep(5000); // 睡眠5秒
} catch (InterruptedException e) {
e.printStackTrace();
}
// 执行完睡眠后,继续执行其他任务
System.out.println("MyThread has woken up after sleeping");
}
// 可选:如果想在 MyThread 对象上直接调用 sleep()
public void customSleep(int milliseconds) {
try {
Thread.sleep(milliseconds);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
// 在主线程中,可以直接通过 myThread 对象调用 customSleep()
myThread.customSleep(2000);
```
在上述代码中,`sleep()` 或 `customSleep()` 方法休眠的是 `MyThread` 自身,而不是主线程。即使主线程在等待 `MyThread` 完成,主线程仍然会继续执行,而不会因为 `MyThread` 的休眠而受到影响。当 `MyThread` 调用 `sleep()` 后,主线程会在等待期间空转。
阅读全文