小小的锁,大大的疑问?Lock疑问?
Lock锁
怎么使用?怎么把下面的这个锁弄得比较合适,大家都能去买票??
和synchronized相比的好处?
lock的使用规范try finnally
private final ReentrantLock lock = new ReentrantLock();//这样定义的好处?????
import java.util.concurrent.locks.ReentrantLock;
public class TestLock {//这样李白会一个人拿完所有的票
    public static void main(String[] args) {
        TestLock1 testLock1 = new TestLock1();
        Thread t1 = new Thread(testLock1,"李白");
        Thread t2 = new Thread(testLock1,"杜甫");
        Thread t3 = new Thread(testLock1,"秦始皇");
        t1.start();
        t2.start();
        t3.start();
    }
}
class TestLock1 implements Runnable{
    private int ticketNum = 10;
    private final ReentrantLock lock = new ReentrantLock();
    @Override
    public void run() {
        while (true){
            try{//规范?
                lock.lock();//上锁,与ticketNum有关的代码,但是能不能再缩小范围呢?
                if(ticketNum>0){
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    System.out.println("剩余票数"+ticketNum--);
                }else{
                    break;
                }
            }finally {
                lock.unlock();//解锁
            }
        }
    }
}
小小的锁,大大的疑问?Lock疑问?的更多相关文章
- 解决问题E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用) E: 无法锁定管理目录,
		在用sudo apt-get install kmymoney2安装软件kmymoney2时,由于速度太慢,想换个软件源,直接关闭了终端,apt-get但进程没有结束,结果终端提示:“E: 无法获得锁 ... 
- 问题:无法获得锁 /var/lib/dpkg/lock - open (11: 资源临时不可用)
		无法获得锁 /var/lib/dpkg/lock - open (11: 资源临时不可用) 问题: 运行程序更新时出现报错: 无法获得锁 /var/lib/dpkg/lock - open (11: ... 
- 无法获得锁 /var/lib/dpkg/lock - open (11: 资源临时不可用)
		转自:http://www.cnblogs.com/ManMonth/archive/2010/01/14/1648010.html 问题: 运行程序更新时出现报错: 无法获得锁 /var/lib/d ... 
- 【Linux/Ubuntu学习 7】E: 无法获得锁 /var/lib/dpkg/lock – open (11: 资源暂时不可用) E: 无法锁定管理目录
		在用sudo apt-get install 安装软件时,由于速度太慢,想换个软件源,直接关闭了终端,apt-get但进程没有结束,结果终端提示 :“E: 无法获得锁 /var/lib/dpkg/lo ... 
- [转]Ubuntu中无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用)
		sudo apt-get install git E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用) E: 无法锁定管理目录(/var/lib/dpkg/ ... 
- ubuntu 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用)
		在用sudo apt-get install kmymoney2安装软件kmymoney2时,由于速度太慢,想换个软件源,直接关闭了终端,apt-get但进程没有结束,结果终端提示:"E: ... 
- Ubuntu 使用apt-get时提示错误:无法获得锁 /var/lib/dpkg/lock
		推荐博客:http://blog.sina.com.cn/s/blog_5c1450a8010188ju.html Ubuntu 使用apt-get时提示错误:无法获得锁 /var/lib/dpkg/ ... 
- 《深入浅出 Java Concurrency》—锁紧机构(一)Lock与ReentrantLock
		转会:http://www.blogjava.net/xylz/archive/2010/07/05/325274.html 前面的章节主要谈谈原子操作,至于与原子操作一些相关的问题或者说陷阱就放到最 ... 
- [解决问题] E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用)
		E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用)E: 无法锁定管理目录(/var/lib/dpkg/),是否有其他进程正占用它? 解决办法: 1.终端输 ... 
- Ubuntu16.04系统下 解决“无法获得锁 /var/lib/dpkg/lock -open (11:资源暂时不可用)、无法锁定管理目录(/var/lib/dpkg/),是否有其他进程正占用它?”的方法
		在Ubuntu16.04下安装软件,例如:sudo apt-get install lrzsz时提示: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用) 无法 ... 
随机推荐
- SpringMVC框架——转发与重定向
			网上摘取一段大神总结的转发与重定向的区别,如下: 转发(服务端行为) 形式:request.getRequestDispatcher().forward(request,response) 转发在服务 ... 
- [BJDCTF 2nd]old-hack
			进入首页: 首页告诉了我们是thinkphp5的漏洞. 知道了是哪个版本的话就搜一搜喽:最后发现是thinkphp5.0.23的命令执行 payload_1:查看根目录文件,发现flag位置 http ... 
- c#  Dictionary<string, object>  转JSON字符串
			JavaScriptSerializer jss = new JavaScriptSerializer(); Dictionary<string, object> dict = new D ... 
- eclipse、  IDEA中字母大小写转换快捷键
			eclipse 中字母大小写切换快捷键: ctrl + shift + x 转为大写 ctrl + shift + y 转为小写 IDEA 中字母大小写切换快捷键: ctr + sh ... 
- Python异常处理,将异常写入到一个文件
			'''定义一个函数func(urllist) urllist:为URL的列表,例如:['http://xx.com','http://www.xx.com','http://www.xxx.com'. ... 
- SCF(SenparcCoreFramework) 系列教程(一):项目介绍及快速搭建
			2020年3月25日的“盛派周三分享”活动首次使用直播的方式与大家见面,共有 500 多人参与了活动,得到了众多开发者的好评,并强烈要求我分享 PPT,这点要求当然必须满足啦! 除此以外,还有许多开发 ... 
- Linux开机启动程序rc.local
			目录 1./etc/rc.local是/etc/rc.d/rc.local的软链接 2.rc.local文件的原始内容 3.rc.local文件的配置 4.应用经验 5.版权声明 在CentOS7中, ... 
- 【Excel使用技巧】vlookup函数
			背景 前不久开发了一个运营小工具,运营人员上传一个id的列表,即可导出对应id的额外数据.需求本身不复杂,很快就开发完了,但上线后,运营反馈了一个问题,导出后的数据跟导出之前的数据顺序不一致. 经过沟 ... 
- ML Lecture 0-2: Why we need to learn machine learning?
			在Github上也po了这个系列学习笔记(MachineLearningCourseNote),觉得写的不错的小伙伴欢迎来给项目点个赞哦~~ ML Lecture 0-2: Why we need t ... 
- [LeetCode] 936. Stamping The Sequence 戳印序列
			You want to form a `target` string of lowercase letters. At the beginning, your sequence is target.l ... 
