1.3个黄牛抢票
2.黄牛(中介)从窗口买票,不用我们自己去买,静态代理模式
第一个包orj.jsoft.proxy是静态代理模式,orj.jsoft.ticket是3个黄牛抢票
1.
package org.jsoft.ticket;
public class Ticket implements Runnable {
private int num = 0; // 出票数
private int num1 = 50; // 剩余票数
boolean flag = false;
@Override
public void run() {
while (true) {
synchronized (this) {//同步所有线程
if (num1 <= 0) {//当剩余票数为0时,跳出循环
break;
}
num++;//出票数依次增加
num1--;//剩余票数依次减少
try {
Thread.sleep(500);// 网络延时0.5s
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("抢票结果:"+Thread.currentThread().getName()+"抢到第"+num+"张票,剩余"+num1+"张票");
}
}
}
}
package org.jsoft.ticket;
public class TextTicket {
public static void main(String[] args) {
Ticket ticket=new Ticket();
// 实例化几个抢票黄牛
Thread h1 = new Thread(ticket, "黄牛1");
Thread h2 = new Thread(ticket, "黄牛2");
Thread h3 = new Thread(ticket, "黄牛3");
h1.start();
h2.start();
h3.start();
}
}
运行结果如下
2.
package org.jsoft.proxy;
//个人和中介代理共同的方法,接口
public interface IProxy {
void buyTicket();
}
package org.jsoft.proxy;
public class Proxy implements IProxy{
//声明一个IProxy接口
private IProxy p;
//两个构造方法
public Proxy(){}
public Proxy(IProxy p){
this.p=p;
}
@Override
public void buyTicket() {
// TODO Auto-generated method stub
p.buyTicket();
over();
}
public void over(){
System.out.println("买到票了!");
}
}
package org.jsoft.proxy;
public class User implements IProxy{
private String cardNum;
private String name;
private String homeAddress;
private String sex;
public String getCardNum() {
return cardNum;
}
public void setcardNum(String cardNum) {
this.cardNum = cardNum;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getHomeAddress() {
return homeAddress;
}
public void setHomeAddress(String homeAddress) {
this.homeAddress = homeAddress;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public void buyTicket() {
// TODO Auto-generated method stub
System.out.println("**********我要买票**********");
User u=new User();
u.setName("罗维璠");
u.setSex("女");
u.setHomeAddress("长春市");
u.setcardNum("220622199707100025");
System.out.println("姓名:"+u.getName());
System.out.println("性别:"+u.getSex());
System.out.println("住址:"+u.getHomeAddress());
System.out.println("身份证号:"+u.getCardNum());
}
}
测试类
package org.jsoft.proxy;
public class TextTicket {
public static void main(String[] args) {
User u=new User();
Proxy p=new Proxy(u);
p.buyTicket();
}
}
运行结果如下