public class Example {
public static void main(String[] args){
String s1="售票者",s2="买票者";
TicketOffice ticketoffice=new TicketOffice(s1,s2);
Thread sell,buy;
sell=new Thread(ticketoffice);
buy=new Thread(ticketoffice);
sell.setName(s1);
buy.setName(s2);
sell.start();
buy.start();
}
}
class TicketOffice implements Runnable{
TicketSeller sell;
String s1,s2; //有改动
TicketOffice(String s1,String s2){
sell=new TicketSeller();
this.s1=s1; //有改动
this.s2=s2;
} public void run(){
if(Thread.currentThread().getName().equals(s1)){
sell.sellTicket(s1);
}
else if(Thread.currentThread().getName().equals(s2)){
sell.sellTicket(s2);
}
}
}
class TicketSeller{
int number=0;
public synchronized void sellTicket(String s){
boolean flag=false;
for(int i=0;i<10;i++){
if(flag=false){
number+=1;
System.out.printf("售票员售出%d号票.\n",number);
flag=true;
}
else if(flag){
System.out.printf("买票者买到%d号票.\n",number);
flag=false;
}
}
}
}
public static void main(String[] args){
String s1="售票者",s2="买票者";
TicketOffice ticketoffice=new TicketOffice(s1,s2);
Thread sell,buy;
sell=new Thread(ticketoffice);
buy=new Thread(ticketoffice);
sell.setName(s1);
buy.setName(s2);
sell.start();
buy.start();
}
}
class TicketOffice implements Runnable{
TicketSeller sell;
String s1,s2; //有改动
TicketOffice(String s1,String s2){
sell=new TicketSeller();
this.s1=s1; //有改动
this.s2=s2;
} public void run(){
if(Thread.currentThread().getName().equals(s1)){
sell.sellTicket(s1);
}
else if(Thread.currentThread().getName().equals(s2)){
sell.sellTicket(s2);
}
}
}
class TicketSeller{
int number=0;
public synchronized void sellTicket(String s){
boolean flag=false;
for(int i=0;i<10;i++){
if(flag=false){
number+=1;
System.out.printf("售票员售出%d号票.\n",number);
flag=true;
}
else if(flag){
System.out.printf("买票者买到%d号票.\n",number);
flag=false;
}
}
}
}