java多线程实例-模拟购票
2015-07-02 11:38
555 查看
private static List<String> object = new ArrayList<String>();
public static void main(String[] args) throws HttpException, IOException {
//模拟电影票
for(int i=0;i<10;i++){
object.add("电影票"+i);
}
//模拟购票
MyThread thread1 = test.new MyThread();
for(int i=0;i<20;i++){
thread1 = test.new MyThread();
thread1.start();
}
}
class MyThread extends Thread{
@Override
public void run() {
synchronized (object) {
int listsize=(object.size()-1);
if(0<object.size()){
//模拟订票
System.out.println(Thread.currentThread().getName()+"来订票:"+object.get(listsize));
try {
System.out.println("线程"+Thread.currentThread().getName()+"进入睡眠状态");
Thread.currentThread().sleep(2000);
//买票成功,将该票移出购票列表
object.remove(listsize);
object.wait();
} catch (InterruptedException e) {
// TODO: handle exception
}
System.out.println("线程"+Thread.currentThread().getName()+"睡眠结束");
}else{
System.out.println("来迟了");
}
}
}
}
public static void main(String[] args) throws HttpException, IOException {
//模拟电影票
for(int i=0;i<10;i++){
object.add("电影票"+i);
}
//模拟购票
MyThread thread1 = test.new MyThread();
for(int i=0;i<20;i++){
thread1 = test.new MyThread();
thread1.start();
}
}
class MyThread extends Thread{
@Override
public void run() {
synchronized (object) {
int listsize=(object.size()-1);
if(0<object.size()){
//模拟订票
System.out.println(Thread.currentThread().getName()+"来订票:"+object.get(listsize));
try {
System.out.println("线程"+Thread.currentThread().getName()+"进入睡眠状态");
Thread.currentThread().sleep(2000);
//买票成功,将该票移出购票列表
object.remove(listsize);
object.wait();
} catch (InterruptedException e) {
// TODO: handle exception
}
System.out.println("线程"+Thread.currentThread().getName()+"睡眠结束");
}else{
System.out.println("来迟了");
}
}
}
}
相关文章推荐
- 稀疏矩阵乘法加法等的java实现
- Spring JMX demo 例子
- spring mvc拦截器和<mvc:annotation-driven />的详解
- Java中只有按值传递,没有按引用传递!
- Eclipse: The method of type must override a superclass method解决方式
- SSh框架结构(Struts2.1+Hibernate4.0+Spring3.1)
- springmvc是 spring的一个组件,他们各自的配置文件详解
- Struts2.3.16.1+Hibernate4.3.4+Spring4.0.2 框架整合
- Spring与Ehcache简单自定义监听器配置
- java可视化编程-eclipse安装windowbuilder插件(转载)
- Spring中使用classpath加载配置文件浅析
- eclipse开发velocity实例(初学)
- 什么时候用ArrayList,什么时候用LinkedList
- JavaBean和POJO的区别
- struts2验证框架配置文件不起作用
- struts2 总是返回input视图解决办法
- eclispe生成javadoc
- java 多线程总结
- slf4j 和 log4j合用的(Maven)配置
- java基础(2)