不安全的取钱
package syn;
public class UnsafeBank {
public static void main ( String[ ] args) {
Account account = new Account ( 100 , "结婚基金" ) ;
Drawing you = new Drawing ( account, 50 , "你" ) ;
Drawing girlFriend = new Drawing ( account, 100 , "女朋友" ) ;
you. start ( ) ;
girlFriend. start ( ) ;
}
}
class Account {
int money;
String name;
public Account ( int money, String name) {
this . money = money;
this . name = name;
}
}
class Drawing extends Thread {
Account account;
int drawingMoney;
int nowMoney;
public Drawing ( Account account, int drawingMoney, String name) {
super ( name) ;
this . account= account;
this . drawingMoney= drawingMoney;
}
@Override
public void run ( ) {
if ( account. money- drawingMoney< 0 ) {
System. out. println ( Thread. currentThread ( ) . getName ( ) + "钱不够,取不了" ) ;
return ;
}
try {
Thread. sleep ( 1000 ) ;
} catch ( InterruptedException e) {
e. printStackTrace ( ) ;
}
account. money = account. money- drawingMoney;
nowMoney = nowMoney+ drawingMoney;
System. out. println ( account. name+ "余额为:" + account. money) ;
System. out. println ( Thread. currentThread ( ) . getName ( ) + "手里的钱:" + nowMoney) ;
}
}
不安全的买票
package syn;
public class UnsafeBuyTicket {
public static void main ( String[ ] args) {
BuyTicket station = new BuyTicket ( ) ;
new Thread ( station, "小明" ) . start ( ) ;
new Thread ( station, "小红" ) . start ( ) ;
new Thread ( station, "黄牛" ) . start ( ) ;
}
}
class BuyTicket implements Runnable {
private int ticketNums = 10 ;
boolean flag = true ;
@Override
public void run ( ) {
while ( flag) {
try {
buy ( ) ;
} catch ( InterruptedException e) {
e. printStackTrace ( ) ;
}
}
}
private void buy ( ) throws InterruptedException {
if ( ticketNums<= 0 ) {
flag = false ;
return ;
}
Thread. sleep ( 100 ) ;
System. out. println ( Thread. currentThread ( ) . getName ( ) + "拿到了第" + ticketNums-- + "票" ) ;
}
}
不安全集合
package syn;
public class UnsafeBuyTicket {
public static void main ( String[ ] args) {
BuyTicket station = new BuyTicket ( ) ;
new Thread ( station, "小明" ) . start ( ) ;
new Thread ( station, "小红" ) . start ( ) ;
new Thread ( station, "黄牛" ) . start ( ) ;
}
}
class BuyTicket implements Runnable {
private int ticketNums = 10 ;
boolean flag = true ;
@Override
public void run ( ) {
while ( flag) {
try {
buy ( ) ;
} catch ( InterruptedException e) {
e. printStackTrace ( ) ;
}
}
}
private void buy ( ) throws InterruptedException {
if ( ticketNums<= 0 ) {
flag = false ;
return ;
}
Thread. sleep ( 100 ) ;
System. out. println ( Thread. currentThread ( ) . getName ( ) + "拿到了第" + ticketNums-- + "票" ) ;
}
}