常用的一些方法
线程中有一些常用的方法,总结一下。
1.currentThread()
作用:获取当前运行的线程对象;
用法:this.currentThread().getName();//获取当前线程的名称;
2.currentThread与this的区别
this是个线程类,引用是那个类的引用,而不是线程对象,所以:
//....
public A(){
System.out.println(Thread.currentThread().getName());
System.out.println(Thread.currentThread().isAlive());
System.out.println(this.getName());
System.out.println(this.isAlive());
}
//在main方法中:
A a = new A();
//依次输入结果:
/*
main
true
Thread-0
false
*/
结果分析:
1.currentThread指当前对象;
2.this是个线程类的引用,这指的是A类。这样看吧,A类中并没有写getName()方法,但是却能使用getName()方法,为啥?因为这个是父类的方法,如果你没从写过这个方法,说明是对父亲的,你父亲设置了名字吗?没有,但是Thread默认给了个——Thread-0;父类进行启动了线程?不是他的子类,所以this.isAlive()为false;
3.isAlive()
作用:线程是否是活动状态(线程已启动但为停止);
用法:启动返回——true,否则——false;创建和死亡均为false;
4.sleep()
作用:就是让指定的线程暂停执行多少毫秒,醒了就自动重新排队运行;
用法:sleep(1000);
try {
sleep(2000);
System.out.println("睡完后的名称:" + this.currentThread().getName());
} catch (InterruptedException e) {
e.printStackTrace();
}
}
5.getId()
作用:线程的唯一标识,name属性可以重复,但是id不能重复;
------------后续会更新…