本章主要学习线程的静态方法
1、先忙先看一段代码:
public class MyThread3 implements Runnable { static {
System.out.println("static方法打印:"+Thread.currentThread().getName());
} public MyThread3(){
System.out.println("购置方法打印:"+Thread.currentThread().getName());
} @Override
public void run() {
System.out.println("run方法打印:"+Thread.currentThread().getName());
}
}
运行结果:
static方法打印:main
购置方法打印:main
run方法打印:Thread-0
以上可以看出:线程类的构造方法、静态块是被main线程调用的,而线程类的run()方法才是应用线程自己调用的。
2、sleep()
sleep(long millis)方法的作用是在指定的毫秒内让当前"正在执行的线程"休眠(暂停执行)。这个"正在执行的线程"是关键,指的是Thread.currentThread()返回的线程。根据JDK API的说法,"该线程不丢失任何监视器的所属权",简单说就是sleep代码上下文如果被加锁了,锁依然在,但是CPU资源会让出给其他线程。
3、wait()使线程停止运行,notify()使停止运行的线程继续运行。