本文主要是介绍Java线程安全3-显示锁Lock,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
package com.java.demo;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
public class Demo2 {
/**
* 同步代码块 和 同步方法 都属于隐式锁
* 线程同步:Lock
* @param args
*/
public static void main(String[] args) {
//线程不安全
//解决方案3:显示锁 Lock 子类 ReentrantLock
Runnable run = new Ticket();
new Thread(run).start();
new Thread(run).start();
new Thread(run).start();
}
static class Ticket implements Runnable {
//票数
private int count = 10;
//显示锁 l
private Lock l = new ReentrantLock();
@Override
public void run() {
while (true) {
l.lock();
if (count > 0) {
//卖票
System.out.println("正在准备卖票");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
count--;
System.out.println(Thread.currentThread().getName() + "出票成功,余票:" + count);
}else{
break;
}
l.unlock();
}
}
}
}
这篇关于Java线程安全3-显示锁Lock的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!