要求:用多线程实现卖票,在控制台打印每个线程买到的票,如果线程抢到执行权后,却没有票了,需要在控制台打印“没票了,结束出票”的提示
自己写的代码:
package cn.kanzia.zuoye;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
public class Ticket implements Runnable{
//定义一个票
private int ticket = 100;
//定义一个Lock类
Lock lock = new ReentrantLock();
@Override
public void run() {
for(;ticket>0;){
lock.lock();
if(ticket>0){
System.out.println(Thread.currentThread().getName()+"买票了"+ticket+" 号票 ");
ticket--;
}
lock.unlock();
lock.lock();
if(ticket==0){
System.out.println("没票了,结束出票");
}
lock.unlock();
}
}
}
/*
* 编写Java程序,要求:用多线程实现卖票,
* 在控制台打印每个线程买到的票,如果线程抢到执行权后,
* 却没有票了,需要在控制台打印“没票了,结束出票”的提示
* 这个提还得建个票务类。。
*/
public class zuoye2 {
public static void main(String[] args) {
Ticket t = new Ticket();
Thread t1 = new Thread(t,"1号");
Thread t2 = new Thread(t,"2号");
t1.start();
t2.start();
}
}
|
|