經典多線程問題 (一)-多線程售票


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();
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM