请高手帮忙看下,如下程序,我和老师敲的代码一模一样,怎么我用eclipse运行出来的结果却不一样,我的只能 5
请高手帮忙看下!如下程序,我和老师敲的代码一模一样,怎么我用eclipse运行出来的结果却不一样,我的只能看到一个线程,和他的却能看到三个线程,我实在找不出答案,我是个菜...
请高手帮忙看下!如下程序,我和老师敲的代码一模一样,怎么我用eclipse运行出来的结果却不一样,我的只能看到一个线程,和他的却能看到三个线程,我实在找不出答案,我是个菜鸟
/*
* 功能:先用Runnable编写一个程序,模拟一个机票售票系统:有
* 三个售票点,在一天卖出2000张票(注意不是每个点都卖2000张,是一共卖2000张)
*/
package com.test2;
public class Aireticks {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//这里创建一个窗口
TicketWindow tw1=new TicketWindow();
Thread t1=new Thread(tw1);
Thread t2=new Thread(tw1);
Thread t3=new Thread(tw1);
t1.start();
t2.start();
t3.start();
}
}
//售票窗口类
class TicketWindow implements Runnable{
//一共两千张票
private int nums=2000;
//private Dog myDog=new Dog();
@Override
public void run() {
// TODO Auto-generated method stub
while(true)
{
//出票速度1秒一张
//先判断是否还有票
//认为if else要保证其原子性【同步块码】
synchronized(this)
{
if(nums>0)
{
//显示售票信息
//Thread.currentThread().getName()[当前线程的名字]
System.out.println(Thread.currentThread().getName()+"正在售出第"+nums+"票");
try {
Thread.sleep(100);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
nums--;
}else{
//售票结束
break;
}
}
}
}
} 展开
/*
* 功能:先用Runnable编写一个程序,模拟一个机票售票系统:有
* 三个售票点,在一天卖出2000张票(注意不是每个点都卖2000张,是一共卖2000张)
*/
package com.test2;
public class Aireticks {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//这里创建一个窗口
TicketWindow tw1=new TicketWindow();
Thread t1=new Thread(tw1);
Thread t2=new Thread(tw1);
Thread t3=new Thread(tw1);
t1.start();
t2.start();
t3.start();
}
}
//售票窗口类
class TicketWindow implements Runnable{
//一共两千张票
private int nums=2000;
//private Dog myDog=new Dog();
@Override
public void run() {
// TODO Auto-generated method stub
while(true)
{
//出票速度1秒一张
//先判断是否还有票
//认为if else要保证其原子性【同步块码】
synchronized(this)
{
if(nums>0)
{
//显示售票信息
//Thread.currentThread().getName()[当前线程的名字]
System.out.println(Thread.currentThread().getName()+"正在售出第"+nums+"票");
try {
Thread.sleep(100);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
nums--;
}else{
//售票结束
break;
}
}
}
}
} 展开
展开全部
不要费太多力气在过时的DOS中断调用上吧。。。
REGS iregs,oregs...这儿的REG指的是寄存器,当然,这儿都是内存变量,
在调用int86这个函数时,函数将结构的相应项赋给对应名称的寄存器。
然后调用DOS中断int10。。
至于不同的参数调用什么功能,你可以搜索,关键词“DOS中断 int10"...
//-----------------------
int 10h 严格来说,属于“BIOS中断“,
功能号:00H
功能:设置显示模式
入口参数:AH=00H
AL=显示模式
显示模式列表:
显示模式 显示模式属性
00H 40×25 16色 文本
01H 40×25 16色 文本
02H 80×25 16色 文本
04H 320×200 4色
05H 320×200 4色
06H 640×200 2色
07H 80×25 2色 文本
08H 160×200 16色
09H 320×200 16色
0AH 640×200 4色
0BH 保留
0CH 保留
0DH 320×200 16色
0EH 640×200 16色
0FH 640×350 2色(单色)
10H 640×350 4色
11H 640×480 2色
12H 640×480 16色
13H 320×200 256色
-------------------------------
功能号01H
功能:设置光标形状
入口参数: AH=01H
CH低四位=光标的起始行
CL低四位=光标的终止行
出口参数: 无
功能号:02H
功能:用文本坐标下设置光标位置
---------------------------------
。。。
----------------------------------
你代码中iregs.x.ax=0x0100;
AX可以拆成AH和AL
高位AH=0X01,功能号。。
低位AL=0X00
。。。剩下的,你应该看得懂了。
如果对您有帮助,请记得采纳为满意答案,谢谢!祝您生活愉快!
vaela
REGS iregs,oregs...这儿的REG指的是寄存器,当然,这儿都是内存变量,
在调用int86这个函数时,函数将结构的相应项赋给对应名称的寄存器。
然后调用DOS中断int10。。
至于不同的参数调用什么功能,你可以搜索,关键词“DOS中断 int10"...
//-----------------------
int 10h 严格来说,属于“BIOS中断“,
功能号:00H
功能:设置显示模式
入口参数:AH=00H
AL=显示模式
显示模式列表:
显示模式 显示模式属性
00H 40×25 16色 文本
01H 40×25 16色 文本
02H 80×25 16色 文本
04H 320×200 4色
05H 320×200 4色
06H 640×200 2色
07H 80×25 2色 文本
08H 160×200 16色
09H 320×200 16色
0AH 640×200 4色
0BH 保留
0CH 保留
0DH 320×200 16色
0EH 640×200 16色
0FH 640×350 2色(单色)
10H 640×350 4色
11H 640×480 2色
12H 640×480 16色
13H 320×200 256色
-------------------------------
功能号01H
功能:设置光标形状
入口参数: AH=01H
CH低四位=光标的起始行
CL低四位=光标的终止行
出口参数: 无
功能号:02H
功能:用文本坐标下设置光标位置
---------------------------------
。。。
----------------------------------
你代码中iregs.x.ax=0x0100;
AX可以拆成AH和AL
高位AH=0X01,功能号。。
低位AL=0X00
。。。剩下的,你应该看得懂了。
如果对您有帮助,请记得采纳为满意答案,谢谢!祝您生活愉快!
vaela
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询