- /*
- * 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;
- }
- }
-
- }
- }
- }
复制代码 |
|