class Ticket{
private int number = 20;
Lock lock = new ReentrantLock();
public void saleTicket(){
lock.lock(); //使用lock块保护代码快,在finally中释放
try {
if(number > 0){
Thread.sleep(200);
System.out.println(Thread.currentThread().getName()+"正在售出第"+number--+"张票");
}
} catch (Exception e) {
e.printStackTrace();
}finally{
lock.unlock();
}
}
}
public class MyClass1{
public static void main(String[] args) {
final Ticket ticket = new Ticket();
//Thread start之后并不会立刻执行 而是交给cpu去调度,cpu来决定什么时候执行
new Thread(new Runnable() {
@Override
public void run() {
for (int i = 20; i > 0; i--) {
ticket.saleTicket();
}
}
},"售票员AA").start();
new Thread(new Runnable() {
@Override
public void run() {
for (int i = 20; i > 0; i--) {
ticket.saleTicket();
}
}
},"售票员BB").start();
new Thread(new Runnable() {
@Override
public void run() {
for (int i = 20; i > 0; i--) {
ticket.saleTicket();
}
}
},"售票员CC").start();
}
}
java 多线程 lock接口 的使用
最新推荐文章于 2024-06-19 21:11:55 发布