封装的实例

[复制链接]
查看11 | 回复3 | 2017-9-26 13:06:30 | 显示全部楼层 |阅读模式
大家好,我想请教个问题:
我在myeclipse 6.5里面执行如下线程程序:
class studentanswer extends Thread
{
private String name;
private String age;
private String school;
private String grade;
private String year;
private String month;
private String days;
privateint x;
public void set(String name,String age ,String school,String grade,String year,String month,String days)
{
this.name=name;
this.age=age;
this.school=school;
this.grade=grade;
this.year=year;
this.month=month;
this.days=days;
}
public void setint(int x)
{
this.x=x;
}
public String getname()
{
return name;
}
public String getage()
{
return age;
}
public String getschool()
{
return school;
}
public String getgrade()
{
return grade;
}
public String getyear()
{
return year;
}
public String getmonth()
{
return month;
}
public String getdays()
{
return days;
}
public intgetint()
{
return x;
}
///这是一个有关学生回答内容的方法
///通过一个分支语句来控制回答的步骤。
private void said()
{
switch(x)
{

case 0:

System.out.println(name+"说:我名字叫"+name+"。");

break;

case 1:

System.out.println(name+"说:我在"+school+"读书。");

break;

case 2:

System.out.println(name+"说:我现在在读"+grade+"。");

break;

case 3:

System.out.println(name+"说:我今年"+age+"岁。");

break;

case 4:

System.out.println(name+"说:我学习计算机软件开发"+year+"年。");

break;

case 5:

System.out.println(name+"说:今年"+month+"月放假。");

break;

case 6:

System.out.println(name+"说:一般放假的天数是"+days+"天。");

break;

case 7:

System.out.println(name+"说:不客气。");

break;
}
}
public void run()
{
said();
try
{

sleep(2000);
}
catch(Exception e){}
}
}
class teacherask extends Thread//创建一个教师提问的线程类。
{
private String name;
privateint x;
public void set(String name)
{
this.name=name;
}
public String getname()
{
return name;
}
public void setint(int x)
{
this.x=x;
}
public int getint()
{
return x;
}
///这是一个老师提问的方法
///通过分支语句来提供提问的步骤。
private void said()
{
switch(x)
{

case 0:

System.out.println(name+"说:你名字叫什么名字?");

break;

case 1:

System.out.println(name+"说:你在哪所学校读书?");

break;

case 2:

System.out.println(name+"说:你读什么系哪一个年级?");

break;

case 3:

System.out.println(name+"说:你今年多大了?");

break;

case 4:

System.out.println(name+"说:你学习计算机软件开发几年了?");

break;

case 5:

System.out.println(name+"说:你几月放假?");

break;

case 6:

System.out.println(name+"说:放假大概有多少天?");

break;

case 7:

System.out.println(name+"说:谢谢你回答我的问题。");

break;
}
}
public void run()
//让线程能够交叉运行
{
said();
try
{

sleep(2000);
}
catch(Exception e){}
}
}
public class thread2
{
public static void main(String[] args)throws Exception
{
studentanswer sa1=new studentanswer();//创建几个学生回答结果的对象。
studentanswer sa2=new studentanswer();
studentanswer sa3=new studentanswer();
studentanswer sa4=new studentanswer();
studentanswer sa5=new studentanswer();
studentanswer sa6=new studentanswer();
studentanswer sa7=new studentanswer();
studentanswer sa8=new studentanswer();
teacherask ta1=new teacherask();
//创建几个老师提问内容的对象
teacherask ta2=new teacherask();
teacherask ta3=new teacherask();
teacherask ta4=new teacherask();
teacherask ta5=new teacherask();
teacherask ta6=new teacherask();
teacherask ta7=new teacherask();
teacherask ta8=new teacherask();
studentanswer[] stt=new studentanswer[]{sa1,sa2,sa3,sa4,sa5,sa6,sa7,sa8};
teacherask[] stt1=new teacherask[]{ta1,ta2,ta3,ta4,ta5,ta6,ta7,ta8};
try
{

for(int x=0;x<8;x++)

{

stt[x].set("TOM","22","重庆大学","自动化系二年级","3","7","54");

stt1[x].set("John老师");

stt1[x].setint(x);

stt[x].setint(x);

stt1[x].start();

stt[x].start();

}
}
catch(Exception e){}
}
}
运行结果如下:
John老师说:你名字叫什么名字?
TOM说:我名字叫TOM。
John老师说:你在哪所学校读书?
John老师说:你读什么系哪一个年级?
John老师说:你今年多大了?
John老师说:你学习计算机软件开发几年了?
John老师说:你几月放假?
John老师说:放假大概有多少天?
TOM说:我在重庆大学读书。
John老师说:谢谢你回答我的问题。
TOM说:我现在在读自动化系二年级。
TOM说:我今年22岁。
TOM说:我学习计算机软件开发3年。
TOM说:今年7月放假。
TOM说:一般放假的天数是54天。
TOM说:不客气。
问题是:
我同事在他的myeclipse里面执行顺序是:
John老师说:你名字叫什么名字?
TOM说:我名字叫TOM。
John老师说:你在哪所学校读书?
TOM说:我在重庆大学读书。
John老师说:你读什么系哪一个年级?
TOM说:我现在在读自动化系二年级。
John老师说:你今年多大了?
TOM说:我今年22岁。
John老师说:你学习计算机软件开发几年了?
TOM说:我学习计算机软件开发3年。
John老师说:你几月放假?
TOM说:今年7月放假。
John老师说:放假大概有多少天?
TOM说:一般放假的天数是54天。
John老师说:谢谢你回答我的问题。
TOM说:不客气。
我也觉得应该是像我同事的那个顺序执行。为什么在我的编译器会出现顺序乱的情况呢?而且我每一次的执行,得到的结果都不一样。请问是什么原因呢?
谢谢大家了!
回复

使用道具 举报

千问 | 2017-9-26 13:06:30 | 显示全部楼层
这和封装有啥关系?
回复

使用道具 举报

千问 | 2017-9-26 13:06:30 | 显示全部楼层
你学过多线程吗?
回复

使用道具 举报

千问 | 2017-9-26 13:06:30 | 显示全部楼层
线程执行起来是无序的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行