Java Lock使用示例

来源:互联网 发布:婚纱摄影 知乎 编辑:程序博客网 时间:2024/06/06 02:54
package com.expgiga.JUC;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;/** * 一、用于解决多线程安全问题的方式: * 1.同步代码块 synchronized 隐式锁 * 2.同步方法 synchronized 隐式锁 * 3.同步锁Lock (jdk1.5以后) 显示锁 * 注意:显示锁,需要通过lock()方式上锁,必须通过unlock()方式进行释放锁 */public class TestLock {    public static void main(String[] args) {        Ticket ticket = new Ticket();        new Thread(ticket, "1号窗口").start();        new Thread(ticket, "2号窗口").start();        new Thread(ticket, "3号窗口").start();    }}class Ticket implements Runnable {    private int tick = 100;    private Lock lock = new ReentrantLock();    @Override    public void run() {        while (true) {            lock.lock();            try {                if (tick > 0) {                    try {                        Thread.sleep(200);                    } catch (InterruptedException e) {                        e.printStackTrace();                    }                    System.out.println(Thread.currentThread().getName() + " 完成售票,余票为 " + --tick);                }            } finally {                lock.unlock();            }        }    }}
原创粉丝点击