Lock锁

 package com.syn;

 import java.util.concurrent.locks.ReentrantLock;
   //性能更好
 public class TestLock {
     public static void main(String[] args) {
         Ticket ticket = new Ticket();
 
         new Thread(ticket).start();
         new Thread(ticket).start();
         new Thread(ticket).start();
 
     }
 }
 
 class Ticket implements Runnable{
 
     private int numTicket = 10;
 
     //定义lock锁
     private  final ReentrantLock lock = new ReentrantLock();
 
     @Override
     public void run() {
         while (true) {
 
             try{
                 lock.lock();//加锁
                 if (numTicket > 0) {
                     try {
                         Thread.sleep(1000);
                     } catch (InterruptedException e) {
                         e.printStackTrace();
                     }
                     System.out.println(numTicket--);
                 } else {
                     break;
                 }
             }finally {
                 //解锁
                 lock.unlock();
             }
 
         }
     }
 }
posted @ 2022-04-28 17:59  好12  阅读(27)  评论(0)    收藏  举报