1,调度模式:优先让优先级高的线程使用 CPU,如果线程的优先级相同,那么会随机选择一个,优先级高的线程获取的 CPU 时间片相对多一些。
2,(1)java可以查看线程的优先级:setPriority(int i)方法,i默认为5,i为1-10;
创建类:
public class TestThreadDemo1 extends Thread{
public TestThreadDemo1(String name) {
super(name);
}
public TestThreadDemo1() {
}
@Override
public void run() {
for(int i=0;i<100;i++){
System.out.println(getName()+": "+i);
}
}
}
在测试类主函数中实例化进行查看优先级:
public static void main(String[] args) {
TestThreadDemo1 t1=new TestThreadDemo1("A");
TestThreadDemo1 t2=new TestThreadDemo1("B");
System.out.println(t1.getPriority());//为5
System.out.println(t2.getPriority());//为5
}
(2)java可以设置线程的优先级:setPriority(int i)方法,i默认为5,i为1-10;
在测试类主函数中实例化进行设置优先级:
public class XianchengDemo1 {
public static void main(String[] args) {
TestThreadDemo1 t1=new TestThreadDemo1("A");
TestThreadDemo1 t2=new TestThreadDemo1("B");
t1.setPriority(1);
t2.setPriority(10);
t1.setName("A");
t2.setName("B");
t1.start();
t2.start();
}
}
但是运行结果并不是t2完全在前面,因为线程优先级只是设定获取cpu时间片的几率高,并不能保证一定是先执行完优先级高的再执行优先级低的。