고전 다선정 문제(一)-다선정 매표

6314 단어
1.0 synchronized
  
/**
 * @ClassName Question11
 * @Description:        -     
 * @Author xtanb
 * @Date 2019/10/22
 * @Version V1.0
 **/
class Ticket{
    private int num = 300;

    public synchronized void sales(){
        if(num>0){
            System.out.println(Thread.currentThread().getName()+"    "+ num-- +"  ,"+"  "+num+"  ");
        }
    }
}
public class Question11 {
    public static void main(String[] args) {
        Ticket ticket = new Ticket();
        new Thread(()->{
            for(int i=0;i<100;i++){
                ticket.sales();
            }
        },"A").start();
        new Thread(()->{
            for(int i=0;i<100;i++){
                ticket.sales();
            }
        },"B").start();
        new Thread(()->{
            for(int i=0;i<100;i++){
                ticket.sales();
            }
        },"C").start();
    }
}

2.0 ReentrantLock
package com.example.demo.study.questions;

import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

/**
 * @ClassName Question12
 * @Description: TODO
 * @Author xtanb
 * @Date 2019/10/22
 * @Version V1.0
 **/
class Tickets{
    private int num = 300;
    private Lock lock = new ReentrantLock();

    public void sales(){
       try{
           lock.lock();
           if(num>0){
               System.out.println(Thread.currentThread().getName()+"    "+ num-- +"  ,"+"  "+num+"  ");
           }
       }catch (Exception e){
           e.printStackTrace();
       }finally {
           lock.unlock();
       }
    }
}
public class Question12 {
    public static void main(String[] args) {
        Tickets tickets = new Tickets();
        new Thread(()->{
            for(int i=0;i<100;i++){
                tickets.sales();
            }
        },"A").start();
        new Thread(()->{
            for(int i=0;i<100;i++){
                tickets.sales();
            }
        },"B").start();
        new Thread(()->{
            for(int i=0;i<100;i++){
                tickets.sales();
            }
        },"C").start();
    }
}

좋은 웹페이지 즐겨찾기