代码如下。publicclassThreadTest{publicstaticvoidmain(String[]args){Thread11a=newThread11();Thread22b=newThread22();a.setPriority(10);b.setPriority(8);a.start();b.start();...
代码如下。
public class ThreadTest {
public static void main(String[] args) {
Thread11 a = new Thread11();
Thread22 b = new Thread22();
a.setPriority(10);
b.setPriority(8);
a.start();
b.start();
System.out.println("main");
}
}
class Thread11 extends Thread{
public void run(){
for (int i = 0; i < 1000; i++) {
System.out.println(1);
}
}
}
class Thread22 extends Thread{
public void run(){
for (int i = 0; i < 1000; i++) {
System.out.println(2);
}
}
}
我自己的理解是,虽然设置了优先级为10和8,只是抢占CPU资源的时候,获得的几率稍微大一点而已。
然后输出结果可能是随意乱输出的,虽然他们优先级不一样。
但是刘中兵的java书这样写道:
他说到,在任何时刻,都是优先级高的先执行,这样输出结果必定是1在前面,就算一个时间片执行完了,依旧没有输出完,但是第二次的时候他还是会得到CPU的资源,因为他说系统优先选择优先级高的运行。这与我们的结果不一致。
而且main方法中也输出main,照他这样理解,main应该在后面输出,但是main有时候在中间,有时候在最上面,有时候在最下面。如果照他这样说,我自己认为,第一次的main方法的时间片足够main执行完,所以会输出main在上面,然后下面就就是1一直抢到资源。可是与实际结果不同。
是这本书说错了吗??感谢!!
展开