《面向对象程序设计-JAVA》第267页例题
程序大致如下:
class th
{
public static void main(String args[])
{
Thread First=new MyThread("A");
First.setPriority(1);
Thread Second=new MyThread("B");
Second.setPriority(6);
Thread Third=new MyThread("C");
Third.setPriority(10);
First.start();
Second.start();
Third.start();
}
}
class MyThread extends Thread
{
String str;
MyThread(String str)
{ this.str=str; }
public void run()
{
for(int i=0;i<2;i++)
System.out.print(str+" "+getPriority()+" ");
}
}
按书上看结果应该是
C 10 C 10 B 6 B 6 A 1 A 1但是机房机子上和我自己机子上跑出结果如下:
F:\myjava>java th
C 10 C 10 B 6 B 6 A 1 A 1
F:\myjava>java th
B 6 B 6 C 10 C 10 A 1 A 1
F:\myjava>java th
B 6 B 6 C 10 C 10 A 1 A 1
F:\myjava>java th
B 6 B 6 C 10 C 10 A 1 A 1从第二次开始,就出现错误!有没有高人来说明一下怎么会这样?谢谢!
程序大致如下:
class th
{
public static void main(String args[])
{
Thread First=new MyThread("A");
First.setPriority(1);
Thread Second=new MyThread("B");
Second.setPriority(6);
Thread Third=new MyThread("C");
Third.setPriority(10);
First.start();
Second.start();
Third.start();
}
}
class MyThread extends Thread
{
String str;
MyThread(String str)
{ this.str=str; }
public void run()
{
for(int i=0;i<2;i++)
System.out.print(str+" "+getPriority()+" ");
}
}
按书上看结果应该是
C 10 C 10 B 6 B 6 A 1 A 1但是机房机子上和我自己机子上跑出结果如下:
F:\myjava>java th
C 10 C 10 B 6 B 6 A 1 A 1
F:\myjava>java th
B 6 B 6 C 10 C 10 A 1 A 1
F:\myjava>java th
B 6 B 6 C 10 C 10 A 1 A 1
F:\myjava>java th
B 6 B 6 C 10 C 10 A 1 A 1从第二次开始,就出现错误!有没有高人来说明一下怎么会这样?谢谢!
解决方案 »
- 为什么要用close()关掉流,不是程序结束自动被gc回收吗?
- [闭月羞花猫]C++ OR JAVA ? 暂别CSDN前,给各位初学者的一点建议。(大家不要悲伤,过两天我还会回来的)
- 关于邮件.
- Integer a=100;Integer b=100; a==b 结果是什么?为什么讲解下
- 如何将一个对象(注意是对象不是String)保存到磁盘上,欢迎大家来讨论!
- 请教java.awt.Font的用法
- Drools&Spring集成之后,怎么在DRL规则文件LHS和RHS部分调用DAO方法?
- 求设计模式 电子书 高分
- 我的deploytool怎么起不来?
- 关于tomcat的配置问题!!请高手指点。。。
- 再请教:窗体数据如何返回?
- 怎样取得当前的日期及时间并将其转换为如2005-12-12-24-15-31-24的字符串
如果是在多CPU下,估计出现的可能更有趣,甚至可以出现这样。
B 6 C 10 C 10 A 1B 6 A 1
由于First优先级底于5(正常情况下),所以它不一定马上运行,因为系统可能还有其他程序片运行着.Second为6,所以一旦start很快就可以获得运行.再加上 for 中是连续的,所以打印出
B 6 B 6
然后Third运行:
C 10 C 10
然后:
A 1 A 1我觉得打印出:B 6 B 6 C 10 C 10 A 1 A 1 算是正常的了!