package com.kexin.thread2;public interface School {
public void set(String schoolname,String grade);
public String getschool();
public String getgrade();
}
学生类:
package com.kexin.thread2;public class student implements Runnable,School{

String schoolname;
String grade;
String studentname;
String studentcode;
String studentsexy;
String studentcourse;
String studentavg;

public student(String studentname,String studentcode,String studentsexy,String studentcourse){
this.studentname = studentname;
this.studentcode = studentcode;
this.studentsexy = studentsexy;
this.studentcourse = studentcourse;

}



public void run() {
int i = 1;
int avg = 85;
for(;i<1000;i++){
System.out.println(studentname+"的平均成绩是:"+i+"月"+avg*(i*1.5));
}

} public String getgrade() {

return grade;
} public String getschool() {

return schoolname;
} public void set(String schoolname, String grade) {
this.schoolname = schoolname;
this.grade = grade;

}}
教师类:
package com.kexin.thread2;public class teacher implements Runnable,School {
String schoolname;
String grade;
String teachername;
String teachercode;
String teachersexy;
String teachercourse;
String teachersalary;
public teacher(String teachername,String teachercode,String teachersexy,String teachercourse){
this.teachername = teachername;
this.teachercode = teachercode;
this.teachersexy = teachersexy;
this.teachercourse = teachercourse;

}

public void run() {
int i =1;
int salary = 300;
for(;i<1000;i++){
System.out.println(teachername+"这个老师的工资为:"+i+"月"+(salary+i*20));
}
} public String getgrade() {

return grade;
} public String getschool() {

return schoolname;
} public void set(String schoolname, String grade) {


}}
 主方法:
package com.kexin.thread2;public class testThread{
public static void main(String[] args) {
student s = new student("xxx","081150052","男","计科");
s.set("啊", "大三");
Thread thread = new Thread(s);
teacher t = new teacher("xxxxxx","95001","女","计算机");
t.set("啊", "大四");
Thread thread2 = new Thread(t);
thread.setPriority(10);
thread.start();
thread2.start();}
}

我对thread设置了优先级10,按理应该thread的内容全部打印才到thread2,可是运行结果还是没有规律的打印,求解决!

解决方案 »

  1.   

    优先级这个东西是这样的。它只是一个建议。如果你跑的东西实在少,CPU资源有剩余的情况下,没有多大用处。
      

  2.   

    优先级设定的高并不意味着它就会占用所有时间片的,操作系统会做任务切换的,一个低优先级别也能获得一些时间片。你要实现这个功能:
     thread.setPriority(10);
        thread.start();
        thread2.start();改成:
        thread.start();
        thread.join();//thread运行完毕后,才会继续运行下去
        thread2.start();
      

  3.   

    +1
    Priority只是个建议,提示CPU这个线程优先级高,具体怎么运行要看CPU当前状态,你设置循环次数大的时候就能发现10优先级的多数情况下先执行就好比垃圾回收机制一样,System.gc()只能提示垃圾回收机制这里可以被回收,具体什么时候回收谁也不知道