java 多线程 lock接口 的使用

来源:互联网 发布:如何下载淘宝数据包 编辑:程序博客网 时间:2024/05/21 20:22
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() {@Overridepublic void run() {for (int i = 20; i > 0; i--) {ticket.saleTicket();}}},"售票员AA").start();new Thread(new Runnable() {@Overridepublic void run() {for (int i = 20; i > 0; i--) {ticket.saleTicket();}}},"售票员BB").start();new Thread(new Runnable() {@Overridepublic void run() {for (int i = 20; i > 0; i--) {ticket.saleTicket();}}},"售票员CC").start();}}

0 0