黑马程序员技术交流社区
标题:
synchronized实现卖票程序
[打印本页]
作者:
哈皮哈皮doge
时间:
2015-8-24 16:55
标题:
synchronized实现卖票程序
/*
* 4个窗口卖100张票
*/
public class TestBuyTickets {
public static void main(String[] args){
BuyTickets bt = new BuyTickets();
//定义4个线程对象
Thread t1 = new Thread(bt);
Thread t2 = new Thread(bt);
Thread t3 = new Thread(bt);
Thread t4 = new Thread(bt);
t1.start();
t2.start();
t3.start();
t4.start();
}
}
class BuyTickets implements Runnable{
private int tickets = 100;//定义100张票
private String str = new String("123");//定义一个对象
@Override
public void run() {
while(true){
//synchronized关键字可应用在方法级别(粗粒度锁)或者是代码块级别(细粒度锁)。
//在Java语言中,每一个对象有一把锁。线程可以使用synchronized关键字来获取对象上的锁,只有获取锁的线程才能执行同步代码块中的内容。
synchronized (str) {
if(tickets>0){
System.out.println(Thread.currentThread().getName()+":"+tickets);
this.tickets--;
}else{
break;
}
}
}
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2