/** * 线程的常用方法 * 获取当前线程,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) { } } } }
//如图所示,保护线程会陪着非保护线程一起执行,当非保护线程执行完毕后,保护线程也跟着一起结束。