线程对象方法
1、start()方法
start()方法用来启动一个线程,当调用start方法后,系统才会开启一个新的线程来执行用户定义的子任务,在这个过程中,会为相应的线程分配需要的资源。
2、run()方法
run()方法不是需要用户来调用的,当通过start方法启动一个线程之后,线程获得了CPU执行时间,便进入run方法体去执行具体的任务。注意继承Thread类必须重写run方法,在run方法中定义具体要执行的任务。
3、getId()方法
getId()的作用是取得线程的唯一标识。
package day03;
public class ThreadTest {
public static void main(String[] args) {
Thread thread1 = Thread.currentThread();
System.out.println(thread1.getId());
}
}
执行结果:

4、isAlive()方法
isAlive()方法的作用是判断当前线程是否处于活动状态,活动状态就是线程已经启动尚未终止,处于正在运行或准备开始运行的状态,线程就是活的。
package day03;
public class ThreadIsActive {
public static void main(String[] args) {
Thread thread1 = new ThreadIsActive().new MyThread();
System.out.println("开始:" + thread1.isAlive());
thread1.start();
System.out.println("结束:" + thread1.isAlive());
}
class MyThread extends Thread {
@Override
public void run() {
System.out.println("isActive:" + this.isAlive());
}
}
}
执行结果:

需要注意这个:System.out.println("IsAlive:" + this.isAlive());虽然打印的是true,但该值是不确定的。打印true的原因MyThread线程还未执行完成,所以输出true。
5、join()方法
很多情况下主线程创建并启动了线程,如果子线程中要进行大量的耗时运算,主线程会早于子线程结束之前结束。如果主线程想等子线程执行完成以后再结束,就需要用到join方法,它的作用是等待线程对象销毁。
package day03;
public class JoinMethod extends Thread {
public static void main(String[] args) {
for (int i = 1; i <= 10; i++) {
if (i == 5) {
try {
JoinMethod t1 = new JoinMethod("JoinedMethod main Thread:");
t1.start();
t1.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println(Thread.currentThread().getName() + ":" + i);
}
}
@Override
public void run() {
for (int i = 1; i <= 5; i++) {
System.out.println(getName() + ":\t" + i);
}
}
public JoinMethod(String name) {
super(name);
}
}
执行结果:

6、getName()和setName()
用来得到或者设置线程名称。
7、getPriority()和setPriority()
用来获取和设置线程优先级。
8、setDaemon()和isDaemon()
用来设置线程是否成为守护线程和判断线程是否是守护线程。
欢迎批评指正,提出问题,谢谢!

浙公网安备 33010602011771号