资源简介

简单实现多线程同步示例(模拟购票系统),内容为实现多线程同步过程,模拟购票系统进行同步购买情况;该处并未考虑线程守护问题,后期将对线程锁等安全问题进行初步研究!

资源截图

代码片段和文件信息

package cn.com.chysoft.demo2;

import java.text.SimpleDateFormat;

/**
 * 线程实现
 * 
 * @author chenyong QQ:369232566
 * @date 2013-03-21 下午14:14
 */
public class Instance implements Runnable {
private Ticket ticket;
private boolean isOk;// 是否购票成功
private TicketCentre centre;// 票务中心
private int wtime;// 购票耗时

public Instance(int wtime Ticket ticket) {
this.wtime = wtime;
this.ticket = ticket;
}

private final void fun(int wtime) {
this.centre = ticket.getCentre();
try {
this.isOk = this.centre.buy(this.ticket);// 购买
/**
 * 设置余票,因为对象中的数值是共享的
 */
this.showMessage(this.ticket.getCentre().getSurplus());
Thread.sleep(wtime);
} catch (InterruptedException e) {
e.printStackTrace();
}
}

public void showMessage(int current) {
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd hh:mm:ss:SSSSSSS --> “);
StringBuffer sbCtx = new StringBuffer(sdf.format(this.ticket.getTime().getTime()));
sbCtx.append(this.ticket.getUser());
if (this.isOk) {
sbCtx.append(“ 在 “).append(Thread.currentThread().getName()).append(“ 购买 “).append(this.ticket.getNum()).append(“ 张票 当前剩余 “).append(current).append(“ 张。“);
} else {
sbCtx.append(“ 在 “).append(Thread.currentThread().getName()).append(“ 购买失败!“).append(“剩余 “).append(current).append(“ 张。“);
}
System.out.println(sbCtx);
}

public void run() {
this.fun(this.wtime);
}

}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1493  2013-03-21 14:18  demo2\Instance.java

     文件       1283  2013-03-21 14:18  demo2\main2.java

     文件       1000  2013-03-21 14:18  demo2\Ticket.java

     文件       1169  2013-03-21 14:18  demo2\TicketCentre.java

     目录          0  2013-03-21 11:25  demo2

----------- ---------  ---------- -----  ----

                 4945                    5


评论

共有 条评论