多线程学习笔记
1.3 个售票员 售出 30张 车票(线程 操纵 资源类)。
package com.keerqin;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
class Ticket{
private int number = 30;
private Lock lock = new ReentrantLock();
public void saleTicket(){
lock.lock();
try {
if(number > 0){
number--;
System.out.println(Thread.currentThread().getName()+"卖出一张票");
System.out.println("剩余"+number+"票");
}
}catch (Exception e){
e.printStackTrace();
}finally {
lock.unlock();
}
}
}
public class zhouyangTicket {
public static void main(String[] args) {
Ticket ticket = new Ticket();
new Thread(() -> {for (int i = 0; i < 40; i++) ticket.saleTicket();},"A").start();
new Thread(() -> {for (int i = 0; i < 40; i++) ticket.saleTicket();},"B").start();
new Thread(() -> {for (int i = 0; i < 40; i++) ticket.saleTicket();},"C").start() ;
}
}