认识多线程:jdk1.5后的显示锁Lock

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/woailuo23/article/details/97555296

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();// 释放锁
			}
		}
	}

}

猜你喜欢

转载自blog.csdn.net/woailuo23/article/details/97555296