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

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

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值