版权声明:版权归 爱装逼的文艺小青年所有 https://blog.csdn.net/toyota_rav4/article/details/84843661
目录
执行同样的任务,线程优先级的高低,在一定程度上决定了任务执行的快慢
优先级概念
线程的优先级决定了线程启动之后占用CPU资源的量(CPU优先执行优先级高的线程任务)。
优先级 1-10 如果设置优先级大于10或者小于1 都会报IllegalArgumentException()异常
线程之间相互调用时,优先级具有传播性
package com.demo7;
public class ThreadA extends Thread {
@Override
public void run() {
System.out.println("ThreadA的优先级:" + this.getPriority());
ThreadB threadB = new ThreadB();
threadB.start();
}
}
package com.demo7;
public class ThreadB extends Thread {
@Override
public void run() {
System.out.println("ThreadB的优先级:" + this.getPriority());
}
}
package com.demo7;
public class Run {
public static void main(String[] args) {
ThreadA threadA = new ThreadA();
threadA.setPriority(8);
threadA.start();
}
}
运行结果:
ThreadA的优先级:8
ThreadB的优先级:8
执行同样的任务,线程优先级的高低,在一定程度上决定了任务执行的快慢
package com.demo8;
public class ThreadA extends Thread{
private int count = 0;
@Override
public void run() {
long beginTime = System.currentTimeMillis();
for (int i = 0; i < 1000000000; i++) {
count = i + 1;
}
long endTime = System.currentTimeMillis();
System.out.println("A线程花费时间:" + (endTime - beginTime));
}
}
package com.demo8;
public class ThreadB extends Thread{
private int count = 0;
@Override
public void run() {
long beginTime = System.currentTimeMillis();
for (int i = 0; i < 1000000000; i++) {
count = i + 1;
}
long endTime = System.currentTimeMillis();
System.out.println("B线程花费时间:" + (endTime - beginTime));
}
}
package com.demo8;
public class Run {
public static void main(String[] args) {
ThreadA threadA = new ThreadA();
ThreadB threadB = new ThreadB();
threadA.setPriority(9);
threadB.setPriority(2);
threadB.start();
threadA.start();
}
}
运行结果:
A线程花费时间:47
B线程花费时间:79