黑马程序员技术交流社区
标题:
售票模拟 非线程安全
[打印本页]
作者:
fmi110
时间:
2015-9-10 16:43
标题:
售票模拟 非线程安全
a
/**
* 需求:设计一个电影售票程序,共一百张票,有三个售票窗口
*
*/
package test;
public class SellTicket {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
method1();
// method2();
}
//方式二:继承模式实现
private static void method2() {
// TODO Auto-generated method stub
Thread t1 = new Thread(new Ticket(),"widow 1");
System.out.println("t1的名字:"+t1.getName());
t1.start(); //启动窗口1
// System.out.println(Thread.currentThread().getName());
new Thread(new Ticket(),"widow 2").start();//启动窗口2
new Thread(new Ticket(),"widow 3").start();//启动窗口3
}
//方式一:继承方式
public static void method1(){
//创建对象
Ticket t1 = new Ticket("window 1");
Ticket t2 = new Ticket("window 2");
Ticket t3 = new Ticket("window 3");
//启动线程
t1.start();
t2.start();
t3.start();
}
}
复制代码
作者:
fmi110
时间:
2015-9-10 16:46
package test;
/**
* 自定义线程:有100张票,实现售票行为,继承方式实现
*/
class Ticket extends Thread{
private static int ticketNumber = 100;//设定初始票数 共享数据 static修饰
public Ticket() {
super();
}
public Ticket(String name){
super(name);
}
//定义售票行为,重写run
public void run(){
while(true){
if(ticketNumber > 0){
System.out.println("当前余票:"+(ticketNumber--)+"..."+this.getName());
}
else{
System.out.println(this.getName()+":对不起,票已经卖光了,欢迎下次光临!!");
break;
}
}
}
}
//创建线程类,实现接口方式
class Ticeket1 implements Runnable{
private static int ticketNumber = 100;//设定初始票数 共享数据 static修饰
@Override
public void run() {
// TODO Auto-generated method stub
while(true){
if(ticketNumber > 0){
System.out.println("当前余票:"+(ticketNumber--)+"..."+Thread.currentThread().getName());
}
else{
System.out.println(Thread.currentThread().getName()+":对不起,票已经卖光了,欢迎下次光临!!");
break;
}
}
}
}
复制代码
作者:
zhangcheng0403
时间:
2015-9-10 18:16
nice,赞一下
作者:
kevin986745zk
时间:
2015-9-10 18:27
66666666666
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2