Lock实现卖票代码

Posted 名字真的很急用

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Lock实现卖票代码相关的知识,希望对你有一定的参考价值。

Lock锁。

Lock实现提供使用synchronized方法和语句可以获得更广泛的锁定操作。

Lock中提供了获得锁和师释放锁的方法

void lock() 获得锁

void unlock() 释放锁

Lock是接口不能实例化,这里采用了她的实现类ReentrantLock来实例化。
ReentrantLock的构造方法。

ReentrantLock()创建一个ReentrantLock的实例。

代码如下。

package threadtest02;

import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

public class sellTickets implements Runnable {
	
private int tickets =100;
private Lock lock=new ReentrantLock();
	public void run() {
		while(true) {
			try {
				lock.lock();
				if(tickets>0) {
						try {
							Thread.sleep(100);
						} catch (InterruptedException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
						System.out.println(Thread.currentThread().getName()+"正在卖票"+tickets+"张票");
						tickets--;
					}
			} finally {
				// TODO: handle finally clause
				lock.unlock();
			}
						
		}
	}
	
 }
public class ontest {
	
	
	public static void main(String[] args) {
		
		sellTickets st = new sellTickets();
		
		Thread th1 = new Thread(st,"飞机");
		Thread th2 = new Thread(st,"高铁");
		Thread th3 = new Thread(st,"汽车");
		
		
		th1.start();
		th2.start();
		th3.start();
	}

}

以上是关于Lock实现卖票代码的主要内容,如果未能解决你的问题,请参考以下文章

Java多线程:线程同步详解

2_Synchronized和Lock

多线程—卖票

多线程通讯轮询卖票了解一下

java多线程(死锁,lock接口,等待唤醒机制)

Java 多线程实现多个窗口同时卖票