文章目录
线程优先级
线程优先级为:1~10,线程的默认优先级都是5,主线程和分线程都是。要测试优先级,我们应该先设置线程优先级再运行线程。CPU选接下来要运行的线程时,不一定选中优先级最高的,优先级越高只是表示这个线程的权重越大,接下来是否选他还是看脸
//测试线程优先级
public class ThreadPriority {
public static void main(String[] args) {
//获取主线程的优先级
System.out.println(Thread.currentThread().getName()+"--->权重"+Thread.currentThread().getPriority());
TestThread testThread = new TestThread();
//new 6个线程,处于NEW状态
Thread t1 = new Thread(testThread,"t1");
Thread t2 = new Thread(testThread,"t2");
Thread t3 = new Thread(testThread,"t3");
Thread t4 = new Thread(testThread,"t4");
Thread t5 = new Thread(testThread,"t5");
Thread t6 = new Thread(testThread,"t6");
//给6个线程赋予优先级(priority等级:1~10)
t1.setPriority(Thread.MIN_PRIORITY);//设置为最小优先级:1
t1.start();
t2.setPriority(Thread.MAX_PRIORITY);//设置为最大优先级:10
t2.start();
t3.setPriority(3);
t3.start();
t4.setPriority(7);
t4.start();
t5.setPriority(5);
t5.start();
t6.setPriority(6);
t6.start();
}
}
//实现Runnable接口
class TestThread implements Runnable{
@Override
public void run() {
//获取当先线程的优先级
System.out.println(Thread.currentThread().getName()+"--->权重"+Thread.currentThread().getPriority());
}
}
守护线程:daemon
定义:守护线程会一直从主线程开始后运行,当所有线程运行完后,守护线程才结束
//测试守护进程
//当前线程结束,守护线程才结束
public class ThreadDaemon {
public static void main(String[] args) {
God god = new God();
Man man = new Man();
Animal animal = new Animal();
Thread thread = new Thread(god);
thread.setDaemon(true);//设置上帝线程为守护线程
thread.start();
thread=new Thread(man);
thread.start();
thread=new Thread(animal);
thread.start();
}
}
//上帝线程(守护线程)
class God implements Runnable{
@Override
public void run() {
while (true){
System.out.println("我是上帝");
}
}
}
//人类线程
class Man implements Runnable{
@Override
public void run() {
for (int i = 0; i < 100; i++) {
System.out.println("I am a Man");
}
}
}
//动物线程
class Animal implements Runnable{
@Override
public void run() {
for (int i = 0; i < 20; i++) {
System.out.println("我是动物!!!");
}
}
}