Lock的简单认识和使用:是一个显示锁,需要通过Lock()方式上锁,必须通过unlock()方式进行释放锁
package com.pccc.pactera.juc01; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; /** * 解决线程安全方式 1 同步代码块 synchronized 2 同步方法 * * 在jdk 1.5后 3 同步锁 Lock 注意:是一个显示锁,需要通过Lock()方式上锁,必须通过unlock()方式进行释放锁 * * @author zhao * */ public class TeskLock { public static void main(String[] args) { Ticket t = new Ticket(); new Thread(t, "1号口").start(); new Thread(t, "2号口").start(); new Thread(t, "3号口").start(); } } class Ticket implements Runnable { private int tick = 100;// 初始售票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();// 释放锁 } } } }
认识多线程:jdk1.5后的显示锁Lock
最新推荐文章于 2022-04-13 19:12:08 发布