线程对象方法
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()
用来设置线程是否成为守护线程和判断线程是否是守护线程。
欢迎批评指正,提出问题,谢谢!