Thread.sleep是一个静态方法!!
下面这个问题,可能会在面试中出现!
public class SleepDemo {
public static void main(String[] args) {
MyThread t1 = new MyThread();
t1.setName("t1");//设置线程t1的名字
System.out.println(t1.getName());//打印线程t1的名字
t1.start();//启动线程
try {
//sleep的作用是让当前线程进入睡眠,进入"阻塞状态",放弃占用的cpu时间片!
//问题:这段代码会让线程t1进入休眠吗? 答应是:不会!!
t1.sleep(1000*5);//这行代码的作用是让当前线程进入休眠!!也就是说main线程进入休眠
//这行代码出现在main方法中,所以main方法睡眠
} catch (InterruptedException e) {
e.printStackTrace();
}
//下面这个sout语句5s后才会执行!!
System.out.println("我执行了睡眠这个程序");
}
}
class MyThread extends Thread{
@Override
public void run() {
for (int i = 0; i < 100; i++) {
//Thread thread = Thread.currentThread();获取当前线程的名字
System.out.println(currentThread().getName()+"---->"+i);
}
}
}
本文通过一个示例解析了Java中Thread.sleep()方法的使用。虽然代码中尝试让线程t1休眠,但实际上休眠的是主线程main。在调用t1.sleep()时,main线程会暂停5秒后继续执行,而线程t1不受影响,继续打印输出。理解这一点对于多线程编程至关重要。
322

被折叠的 条评论
为什么被折叠?



