Thread.sleep()方法
注意:(★:注意程度,仅对于我自己而言)
①★使当前线程睡眠
②★sleep()的参数指定以毫秒为单位
③★★会释放出当前CUP资源,但是不会释放出对象锁——该处应该和wait()进行比较
④★除非因为中断而提早恢复执行,否则线程不会在这段时间之前恢复执行
代码Demo:
//调用join()方法,将当前线程与调用join()方法的线程“合并”,达到控制线程的目的
public class Join {
//思路:1、"线程1"拿到CPU资源时睡一秒
// 2、间接达到让"线程2"先运行完的目的
public static void main(String[] args) {
MyRun mr1 = new MyRun(1);
Thread t1 = new Thread(mr1);
t1.setName("线程1");//设置线程名
MyRun mr2 = new MyRun(2);
Thread t2 = new Thread(mr2);
t2.setName("线程2");
//启动--就绪态
t1.start();
try {
t1.join();//调用某线程的该方法,将当前线程与该线程“合并”
//该处:即调用t1线程的方法,将main线程与t1线程结合起来
} catch (InterruptedException e) {
}
t2.start();
}
}
class MyRun implements Runnable{
private int num = 0;
public MyRun(int num) {
this.num = num;
}
@Override
public void run() {
for(int i=num;i<=10;i+=2){
//Thread.currentThread()--静态方法,返回对当前正在执行的线程对象的引用
Thread thread = Thread.currentThread();
String name = thread.getName();
System.out.print(name+":"+i+" ");
}
System.out.println();//当其中一个线程run()方法运行完时,空行
}
}