java中锁的应用(ReentrantLock)
package com.xielu.test;
public class explicit {
private static Lock lock = new ReentrantLock();
private static Condition odd = lock.newCondition();
private static COndition even = lock.newCondition();
private static int cnt = 1;
private static final int MAX = 100;
pulic static void main(String args[]){
Thread th1 = new Thread(){
@Override
public void run(){
try{
lock.lock();
while(cnt <= MAX){
if(cnt%2 != 0){
System.out.println(cnt);
cnt++;
even.signalAll();
}else{
try{
odd.await();
}catch(Exception e){
e.printStackTrace();
}
}
}
} finally {
lock.unlock();
}
}
};
Thread th2 = new Thread(){
@Override
public void run(){
try{
lock.lock();
while(cnt <= MAX){
if(cnt%2 == 0){
System.out.println(cnt);
cnt++;
odd.signalAll();
}else{
try{
even.await();
}catch(Exception e){
e.printStackTrace();
}
}
}
} finally {
lock.unlock();
}
}
};
th1.start();
th2.start();
}
}
java中锁的应用(ReentrantLock)的更多相关文章
- JAVA中锁的解决方案
前言 在上一节中,我们给大家介绍了什么是锁,以及锁的使用场景,我相信大家对锁的定义,以及锁的重要性都有了比较清晰的认识.在这一节中,我们会给大家继续做深入的介绍,介绍JAVA为我们提供的不同种类的锁. ...
- 并发王者课-铂金1:探本溯源-为何说Lock接口是Java中锁的基础
欢迎来到<并发王者课>,本文是该系列文章中的第14篇. 在黄金系列中,我们介绍了并发中一些问题,比如死锁.活锁.线程饥饿等问题.在并发编程中,这些问题无疑都是需要解决的.所以,在铂金系列文 ...
- java中锁
s锁的作用是就是保证线程安全,但是从另外成都讲影响了效率: 1 synchronized关键字 这个是虚拟机底层实现的, java中的关键字,内部实现为监视器锁,主要是通过对象监视器在对象头中的字段来 ...
- java中锁的应用
锁作为并发共享数据,保证一致性的工具,在JAVA平台有多种实现(如 synchronized(重量级) 和 ReentrantLock(轻量级)等等 ) .这些已经写好提供的锁为我们开发提供了便利. ...
- JMM之Java中锁概念的分类总结
在Java的并发编程中不可避免的涉及到锁.从不同维护可以将锁进行不同的分类,如下: 1.乐观锁和悲观锁(根据读写操作的比例划分) 乐观锁是一种乐观思想,即认为读多写少,遇到并发写的可能性低,每次去拿数 ...
- java中锁的概念/介绍
前言 Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率.本文旨在对锁相关源码(本文中的源码来自JDK 8和Netty 3.10.6).使用场景进行举例,为读者介绍 ...
- 浅谈对java中锁的理解
在并发编程中,经常遇到多个线程访问同一个 共享资源 ,这时候作为开发者必须考虑如何维护数据一致性,在java中synchronized关键字被常用于维护数据一致性.synchronized机制是给共享 ...
- Java中锁的内存语义
我们都知道,Java中的锁可以让临界区互斥执行.锁是Java并发编程中最重要的同步机制,锁除了可以让临界区互斥执行外,还可以让释放锁的线程向获取同一个锁的线程发送消息.下面是锁的释放-获取的代码: C ...
- java中锁的理解
在并发编程中,经常遇到多个线程访问同一个 共享资源 ,这时候作为开发者必须考虑如何维护数据一致性,在java中synchronized关键字被常用于维护数据一致性.synchronized机制是给共享 ...
- Java中锁的实现与内存语义
目录 1. 概述 2. 锁的内存语义 3. 锁内存语义的实现 4. 总结 1. 概述 锁在实际使用时只是明白锁限制了并发访问, 但是锁是如何实现并发访问的, 同学们可能不太清楚, 下面这篇文章就来揭开 ...
随机推荐
- UI工具
sketch figma Adobe Photoshop Adobe Illustrator adobe xd
- js函数参数默认值
以前的写法,利用短路原则来写: function haosy(name,age){ name=name||'小郝'; age=age||21; alert('读者你好,我是作者'+name+',芳龄' ...
- C#消息泵探索(一)
消息泵 消息泵,又叫消息循环. 消息循环使用一个图形化用户界面下Microsoft Windows.具有GUI的Windows 程序是由事件驱动的.Windows为每个创建窗口的线程维护一个单独的消 ...
- Scala集合排序
Scala集合排序有三种方法:sorted.sortBy().sortWith() (1)sorted 对一个集合进行自然排序,通过传递隐式的Ordering源码中有两点值得注意的地方:1.sorte ...
- 在虚拟机安装用友u8的时候出现的一些问题
几个星期前装的了,小问题不记得,但是有个问题还是记一下 在win10,sql sever2008,u8都装完后,想登录账号,但总是找不到数据源,初始化也失败(密码也不记得自己设过没),也就是登陆时会有 ...
- 【git】2.3查看提交历史
资料来源 (1) https://git-scm.com/book/zh/v2/Git-%E5%9F%BA%E7%A1%80-%E6%9F%A5%E7%9C%8B%E6%8F%90%E4%BA%A4% ...
- SAP Process Orchestration (SAP PO): The Comprehensive Guide (2nd Edition) (SAP PRESS)
SAP Process Orchestration (SAP PO): The Comprehensive Guide (2nd Edition) (SAP PRESS) 有需要的联系 wx :erp ...
- HttpWebResponse 四种accept-encoding解析(gzip, deflate, br,identity)
HttpWebResponse 四种accept-encoding解析(gzip, deflate, br,identity[默认]) var hwrs = (HttpWebRe ...
- TCP协议之三次握手(二)
本节主要研究三次握手出现的一些异常情况和编程相关的知识: 上一节分析了三次握手的过程,本节会回答一些三次握手的小问题,然后利用linux系统调用实践一下简单的网络的编程. 三次握手的常见问题 Q 向一 ...
- VUE中如何使用MOCK
安装mockjs npm install mockjs 可以使用数据模板生成模拟数据. Mock.mock( rurl?, rtype?, template ) ) // 或者 Mock.mock( ...