/**
* 线程的常用方法
* 获取当前线程,Thread.currentThread();
* 线程的优先级:Thread.setPriority(int level)来设置线程的优先级
* 线程优先级从1到10,1是最不重要,10是最重要,默认一个线程优先级是5,
* 我们用Thread.MAX_PRIORITY表示线程的最大优先级
* 我们用Thread.MIN_PRIORITY表示线程的最小优先级
* 我们用Thread.NORM_PRIORITY表示线程的默认优先级
* 优先级高的每次抢到资源的概率高
*
* 守护线程
* 只要当前JVM中尚有任何一个非守护线程没有结束,守护线程就全部工作
* 只有当JVM中最后一个非守护线程结束时,守护线程就会随着JVM一起结束工作
* 守护线程的作用为其他线程婞提供便利,守护线程最典型的应用是GC(垃圾回收器)
* 守护线程并非只有JVM提供,用户在编程的时候可以自己设置守护线程
* Thread.setDaemon(true) 必须在start()之前设置
*
* 不能把正在运行的线程设置为守护线程
*/
public class ThreadTest02 {
public static void main(String[] args) {
Thread t = new Thread(new Thread02());
System.out.println(t.getName());//输出的结果为:Thread-0
Thread t1 = Thread.currentThread();
System.out.println(t1.getName());//输出结果为:main
t1.setPriority(Thread.MAX_PRIORITY);//优先级最大,
//守护线程举例
Thread don = new Daemon01();
Thread td =new Thread(new Thread02());
don.setDaemon(true);//设置为守护线程
don.start();//守护线程
td.start();//普通线程
}
}
class Thread02 implements Runnable{
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println("普通线程第"+i+"次运行");
try {
Thread.sleep(50);//50毫秒执行一次
} catch (Exception e) {
}
}
}
}
class Daemon01 extends Thread{
public void run() {
for (int i = 0; i < 10000000000l; i++) {
System.out.println("保护线程第"+i+"次运行");
try {
Thread.sleep(10);//10毫秒执行一次
} catch (Exception e) {
}
}
}
}
//如图所示,保护线程会陪着非保护线程一起执行,当非保护线程执行完毕后,保护线程也跟着一起结束。