class
SalesLady {
int memontoes, five, ten;
public synchronized String ruleForSale( int num, int money) {
String s = null ;
if (memontoes == 0 )
return " 对不起,已经售完 " ;
if (money == 5 ) {
memontoes -- ;
five ++ ;
s = " 给你票, " + " 你的钱正好。 " ;
} else if (money == 10 ) {
while (five < 1 ) {
try {
System.out.println( "" + num + " 号顾客用10元购票,请等待 " );
wait();
} catch (InterruptedException e) {
}
}
memontoes -- ;
five -= 1 ;
ten ++ ;
s = " 给你票, " + " 找你5元。 " ;
}
notifyAll();
return s;
}
SalesLady( int m, int f, int t) {
memontoes = m;
five = f;
ten = t;
}
}
public class 八_5 extends java.applet.Applet {
static SalesLady saleslady = new SalesLady( 14 , 0 , 0 );
public void start() {
int moneies[] = { 10 , 10 , 5 , 10 , 5 , 10 , 5 , 5 , 10 , 5 , 10 , 5 , 5 , 10 , 5 };
Thread[] aThreadArray = new Thread[ 20 ];
System.out.println( " 现在开始售票: " );
for ( int i = 0 ; i < moneies.length; i ++ ) {
aThreadArray[i] = new Thread( new CustomerClass(i + 1 , moneies[i])); aThreadArray[i].start(); } WhileLoop: while ( true ) {
for ( int i = 0 ; i < moneies.length; i ++ )
if (aThreadArray[i].isAlive())
continue WhileLoop;
break ;
}
System.out.println( " 票已售完 " );
}
}
class CustomerClass implements Runnable {
int num, money;
public void run() {
try {
Thread.sleep( 10 );
}
catch (InterruptedException e) {
}
System.out.println( " 我是 " + num + " 号顾客,用 " + money + " 元购票,售票员说: "
+ 八_5.saleslady.ruleForSale(num, money));
}
CustomerClass( int n, int m) {
num = n;
money = m;
}
}
int memontoes, five, ten;
public synchronized String ruleForSale( int num, int money) {
String s = null ;
if (memontoes == 0 )
return " 对不起,已经售完 " ;
if (money == 5 ) {
memontoes -- ;
five ++ ;
s = " 给你票, " + " 你的钱正好。 " ;
} else if (money == 10 ) {
while (five < 1 ) {
try {
System.out.println( "" + num + " 号顾客用10元购票,请等待 " );
wait();
} catch (InterruptedException e) {
}
}
memontoes -- ;
five -= 1 ;
ten ++ ;
s = " 给你票, " + " 找你5元。 " ;
}
notifyAll();
return s;
}
SalesLady( int m, int f, int t) {
memontoes = m;
five = f;
ten = t;
}
}
public class 八_5 extends java.applet.Applet {
static SalesLady saleslady = new SalesLady( 14 , 0 , 0 );
public void start() {
int moneies[] = { 10 , 10 , 5 , 10 , 5 , 10 , 5 , 5 , 10 , 5 , 10 , 5 , 5 , 10 , 5 };
Thread[] aThreadArray = new Thread[ 20 ];
System.out.println( " 现在开始售票: " );
for ( int i = 0 ; i < moneies.length; i ++ ) {
aThreadArray[i] = new Thread( new CustomerClass(i + 1 , moneies[i])); aThreadArray[i].start(); } WhileLoop: while ( true ) {
for ( int i = 0 ; i < moneies.length; i ++ )
if (aThreadArray[i].isAlive())
continue WhileLoop;
break ;
}
System.out.println( " 票已售完 " );
}
}
class CustomerClass implements Runnable {
int num, money;
public void run() {
try {
Thread.sleep( 10 );
}
catch (InterruptedException e) {
}
System.out.println( " 我是 " + num + " 号顾客,用 " + money + " 元购票,售票员说: "
+ 八_5.saleslady.ruleForSale(num, money));
}
CustomerClass( int n, int m) {
num = n;
money = m;
}
}