aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAANwAAADHCAYAAABySz3ZAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAABRESURBVHhe7Z1NzxxHEcfzefARJBAJyHY4kCA5sfNq4zw+JBIQyGM4EIWDBcKSE+QDBB5HMhYChCyZS2QJKXyC8LWGqe6t6eqa6u6ZnZne2Z3/4Sfv9HtX13+md5/p8gs3btxoAAB1eOGTTz4xMwAA80Jac4J77UdXAAALA8EBUBEIDoCKQHAAVASCA6AiEBwAFYHgAKgIBFeJO/efN//+7/+axxd3zfx9WapdsAwQ3Excu/vEOf7Du5f7ea/ebO49/drlP/vqSXP+ar/MPizVLliOoxTctbO7zb2L583jr7yz+Tv8g+b87HAOlxMcMfRJROUejxAPnnDHRVFwr79+pXnrF1eam7+90tz67KqDPlMa5Vl1loQcWwpN8uyATlcS3FDOL77G0+qEyQrujTutyD692vz4oQ3lURmr7hJce/Vu83AnNrqj3xFPtDt3HzQP70NwYN0kBUdCskRmUUt0vH0a+iSj7zjneuv5tHVmtfWkdp999by5d9aWvx+eoM/asveMbaprl8rtvj9JpODkDYKxxs5izfH4/s1QfmC7zFJ2AOMxBUdbxdyTTUNlre3lWz+72tz+Y8ufrjZvf3S1lz8G/oHAO0R58eUPChrdRvc9yCivnzbeee12ibUJbik7gP0wBUffz7SovnX5GxE6n+rINggS2o23rzTX32w//2Wq4LyTPXv6oLkzYOG7p2Fbnu/kfKd36cJBuSzhtqpt+1JYkYh24pDtujYKW8pu/JknETF2S1lqdyk7gP0wBUc/imhBES+ffdNh5VEd2QZx+9HL3ef3HtUTHN/VLce18jqnVE7L4uKnS7bdFQpuKTuA/TEFl9pO5gRHdWQbxHtfeMGR2Cx0+RzjBJd3bu/UYTvFjqbFkhScMYZ1Cm4ZO4D9WVRwjCU2wiqbItyRy9/hlhPcrl0IDuyJKbi5tpSMJTbCKpuDHGTIwneONnIrVRZceovGY5tHcOWbCjNIcDPbAeyPKbi5fjRhLLERVtkc184edD9V85d6ztN/h2MBkCNyOXKy3I8FQxxNi9699dI6LqVZbTBDBcdjedzOpbR1JkrtLmUHsB+m4Ob6swBjiY2wypZgp7CQzsOOaJajv0FJsY5wNCl6yeML/3cr2QbXT2E5cKpONIYR7S5lB7AfpuCINf7hm3FPs6dBeLQFs96l5Hcu43L9J8dYR7vW9s9/q3rWjuPh3ZudEKcKjqA/Mei/he0rOFd+ITuA8SQFR5CQck86yqstNgCOmazgCNoq0vcz+lFkDS8vA3DMFAUHAJgPCA6AikBwAFQEggOgIhAcABWB4ACoCAQHQEUgOAAqAsEBUJFOcLdu3QIALAyecABUBIIDoCIQHAAVgeAAqAgEB0BFIDgAKjJYcO9c+0Hz+/duN//88Lz58u7HDvpMaZRn1QEAxAwW3JfnHzf/+dVvTCjPqnMM+Fgkw8PSgW1T8heK/5ILVlwU3PsfnLl/LaFJZNljYojgKLgORQSjkHMIpLNtFhXcm9d/2Hz6+SP32RKZhMpQWaoj2yDm/F90loSDo0aRt8jAOwP6fDwNQZpJgjv/5Xnz8NFf3WdLZBIqQ2WpjmyDmPN/0VkSS3D0VNOh71JBVwGYJLjfffqHSHCvfful5u3vX27e+O5Lza+vXW/e+d5ld/3ns/ddGSpLdWQbxBz/i45/lIdYjSwCuc3joKecJyefqu/TnzQfvRIHTKV6Z6+823uiyScep4Hjgm+s8uuB+9rAvqKC58pw8Owv3bURaHdvwX32+Rc9wf3tgw+bf/zkI/f5Xz89b/7+wc+bd1vRURkqS3VkG8TU/0XHGegiTMIJaTdp/n7F6Y9bgbAhWYy5+tKA+gnnjRmMm0oDx0d0MxbrzgKSYkz7iy/L/kKQz80muDdefClsIVvB8efr33nRlUkJjrHERlhlLTgysLzrSANQvPx7Z60R3ITJiPHTqVS/JzjKU8bzZfA97tjxYvHrGPmAEGIoKwRZKmukSbKC01vKlOBeE4KztpSMJTbCKivxkxRbx55IDKG5cOR+4tn6vbbwhNsKvAOiG3HnG0nBDRTnFMHpH01IWCXBWT+aMJbYCKusRE/CbSOF0zuDtQbhrSVfp4wo65cFFz/NZHlOA8eJW8unT9z/U8FrzNtE9h2XJvwn9hdfNviL95+9BTfXnwUYS2yEVVbCE+HtoP+faoLTeyOoraAQSq6+FhCJ0W05d0bDr5SnSycQtZ4sJPYXeXPX/kL+EMq1Pnd/whOOOPU/fJdwBua7m1ug+IkHwBiKgmNO9dWuIbgtaHsXlH+CAGAfBgsOLy8DMJ3BggMATAeCA6AiEBwAFYHgAKgIBAdARSA4ACoCwQFQEQgOgIpAcABUZLDg8KYJANMZLDiEyRvPkm3XRM6D37CXJyiisid+XrC0pvoomKYouC2HybPOw7l0qpMxKgPB9fMlx/hS+KKC23qYvKmCG0rJiWuTG89cgpM29G0e/42JmCS4rYfJg+D645lLcKd6sHeS4BAmryy4TpT3w8nfbjy7tsn5UuV4zJzWjVelhzmyw/t8P04K56fSboe++2OJ2+A+yCbWeGRbubp+fJRO9vRjkltFXo9Dhx/kOcixue3trv+eDRJ29G3FZV35zDyygkOYPDLmEMGFY/q+PV8nbjtTrtCvzOfPkRNYaaJvfW2WlzbR4xlVl8a++0zpwvn4qSbLULprw0hbEjk2OV9ep96NgudkrCnbiaA5zia4zYXJcwaN23DpVCcSnBaHv+4vTqKc7rddYB6npLt5iLKhLZUm+tbXpTZ64xlVl+bZn3OULuwXtxHsszTR2OT81E3ClxXzK5U10iRZwSFMXnzNSKNmhRS1nSmn+80smjUmM030ra9LbfTGM6puEBbl0U2O7B7tRFSZVNrS8A6Ix0hpacEZazq34LYeJk+XdW05xxDizQkpajtTTvXLfchxnF+kx2imub5Df9Gcd+XZXqn8bjyGjdJ1Y+G4umYounDdlRP1apAem7Gl3PlPbIt4nTrb7Cs4hMnzaXQn5LquvlwM5Ty+L3/dXxy7HF3rfnlO3Kde1EhcRhrBbboxyzlz+TaN8+VNRdal8Zg/miTq+nnGbVnfa/j7HF87pxYirgHPRffLQjLnp/yFxh3KteuJMHlAkxLoUvDWTaY5x+WbixtPuPmcMkXBMVsOk3dq1BScfiJI3Fa0fbpYgjxVBgsOLy+fDrUEx1vxWk/SY2Cw4AAA04HgAKgIBAdARSA4ACoCwQFQEQgOgIpAcABUBIIDoCIQHAAVGSw4vGkCwHQGCw5h8taL9YY+SHNIexUFt+0webvjG0a+PmN3CPjl31oOdCovGa9WcAiTt7u+6Ivr0IKLj7fUcSBvj+M/RrNawSFMHl/7f1OngDmtJvIAZ00HOsRB0blZreAQJo/Dz4X6VtuhHaN9N6b2qWCE0Qv5ol/lCPLUdghjED9ptAPl2hwzHusEs5vnAW80c1DTXpqs4BAmL752fXFZKeZc+7sF6cbo+vNi4bxoARNj43xXxtUL6fK62OaA8ej5R4JTfR8jNe2lGSW47YXJs6/J+FJw2fbdooRx+DZ2C2a0IfvsFlvUd2VozAkRDGtzxHhUmizPZY6NmvbSZAWHMHnxtRyL/CEl2/7YBRP5cVoQnnQYnz/EgWTdEeNRabrvY6SmvTRZwW09TJ6+ZvhJxm1m288tmMsztjPcbju2e8ZY+m0KByq1OWA8ev5ybtJe3P6xUdNemqzgth4mT/5oQnmMNmy2/cyC+Wu/aFxX3kgIjgvi8nY3FE4PC01tCHtk2iyOZ2dLX69N1z+akDOKcRwjNe2lyQqOQJi8deIWOrOwcxHf7WNnA32kvaz8ouAYhMlbH27rOuPTxguqf+fn7Zb8Ewwo28tisODw8vI2kFskAgLLM9ZegwUHAJgOBAdARSA4ACoCwQFQEQgOgIpAcABUBIIDoCIQHAAVgeAAqMhgweFNEwCmM1hwCJPH78qFd+fWxpi51GLKmPy7iv3TGnNxiPUsCm7LYfIYfkl4DYKTx3UkbnwLCM7Pud+m62vAaYXcmEovQ29OcFsPk+fShGOt6QlXayxTBSfR9vXX6RvE5gS39TB5RO6g5yE5BcG5tMyB1s0JDmHy6MR3cDa9QNxfV6eX19adKbyaRo/Fpe3mQmld/xTbZdcPzZlsUhqPzOvayQiuK2PMNWffbl0S8w6Ci+tKAepx6xPzuXyfp6/7NnB5bh79MeTmbpEVHMLkWQvCZf3iRIsi293ld2Nz/XjH5bzQj+93fsGJMBA7ocXjkWWDqKQddF7UVyS4xFyjfmL7urLGPELezi4i37JxaQ3y+fJzygbt5z3CIHKfklGC21yYPMoTIogWiIyuBBIvkrWA/tqsa6TlkGPp0qK56P7T19Q320Xib1Zxvaiv3Xj7bYu5Zuyry3JanGeV39m4tAaD1iisZ8oGXNf0n8zcuZ4kKziEyQsLoq/Ti+mNnXVCq66RlkOPzaVFc9H9p69zfWubdOmiTnauGfv6sv15hDyrfEgrrkEpX/SdtUHOfzJzl20wWcEhTJ42plgg99nYruz6yS0E1w39+H5TC24hx9Kl7Ss4NR7i/CK0re3N5Tv79toWcy0JTuRzWpfHdtmtKxGtnRqHq9Nbg1J+3JZlg6z/ZObO7Uiygtt6mDwycO5XSl4kbrfvlOmF4DH7em26+NEk54SMHotLE/X6/ReuxXgI6XgE2YHziMiJM3Mt2dc5sxCUhNeNgu5yv9LGvgz1ba9BKd/nieuEDbL+k5k7XWuygiO2HibPLYK4uy1FdOfNOOEpUXLOU6QoOGbLYfLcFmJGAXhH03fasPWh/vQT5hSRf9LZCoMFh5eX50VvX7bmeFtlsOAAANOB4ACoCAQHQEUgOAAqAsEBUBEIDoCKQHAAVASCA6AiEBwAFRksOLxpAsB0BgsOYfKmI/vSb6qDPt1pgYXeKz3EGhQFt+UwefroRZe+5wmCkuD4JWl9HITQx07mYs0vEG9OcFsPkzdVcDmH0Yst27Tq0ZEdEt4Q5xvjqL6sfcM5NGPmsQ+rE9zWw+TVFFx80NWu55+QZQcZ66hrPX+3OcEhTF5ZcJ0oVZg0HkvU3u0gGLnY3rFCP0nBqXRrTla/YZwhXW4j5Xw4bQ2E+cZjl3bpzVcJKJcv18Aq27ORMQZfp7/+XE+TFRzC5O2MWRRcIkScKRDuKyy2/OzKqXqMTM/OqTAPOz/0vxZ4nJFIonl620fCGJ0vP9s2ytva92GtP/cpGSW4zYXJU4vAuDqR4PRC+eteeynBifZCG6EeI9vmNHNOut/WQbiMhB3RancNWHaQac7x1ZN5VL5cg4KNCNvW6fXnepKs4BAmL75m5ELOIjjxObRR6Dc3J92v4XgS3f9asOwg09KC2tm/lC/XIGOjvK3T6y/bYLKC23qYPF3WteUMLIyfMbhur79Q8rNuQzkazUGWyc1J97sbs2xPhsGT4+L8NcDzkD/oxPOM18LVEXYZlh+3Zdkob2uqZ68/tyPJCg5h8nwafRfkuq6+XMCCwWV7qR9NuI8gkHi8XJ/HY5XRNtHzYBtxeelYzqGEU68FniPC5BnIsmA8brGVqGpQchAwL0XBMVsOk1cLt1Wp/KSRf1YByzNYcHh5GYDpDBYcAGA6EBwAFYHgAKgIBAdARSA4ACoCwQFQEQgOgIpAcABUBIIDoCKDBYc3TQCYzmDBrfFdSn0qYAn0G+Vg25R8Th/l0RQFt+bTAocSHL9kjBd/t8eigttamDwL88wUnzHD0RagmCS4rYXJs9CCkwdFXf5KD2+CwzBJcGsKk8cnmInueLt7vIunjxOHP5nrwhHcD5P3eT6tO7krT267tqzTvkFw1hNNPvE4DawbPsEt1999TYh8JXFKPONzXfl9BbeaMHlqklY6T1wfi9dG5KeRr+vF48pmw6D1P3djMNLA+pFPIvYV8h32k+hmLP0h43ME7YBmE9yhwuTxxGQQHZcuJ288ymOjUhuhvvW0Mp+iQlCuP92H0Q5YP9Ifin4kBTnC5zhNkhXcWsLkMTxxFt5cgvPthLta1K4UnPjc9WGkgeOAf2WmG2239knBjfc5TpNkBbeaMHntJO+prWLvbuMcv7SlTAhOGcnt5w2R6TZcO2IMnAaOA7d2T580D8UOhf2ot6VkPxrhc1xfkhXcWsLkEXQ36rZ70few4Oz+uvCjiSW4naG4/X4YtNAHfqU8HTqBqPVjIXX+1vMxcd2ufygX+5xsk8kKjjjmMHmlx/s++LsiiziI1ioLgKYoOGbtYfK884s7j7E1mAu35WzvivwdwCoDgMVgwR3Dy8tyS0lADGBtDBYcAGA6EBwAFYHgAKgIBAdARSA4ACoCwQFQEQgOgIpAcABUBIIDoCKDBYcweQBMZ7DgECav3IcsO6YeOB5KPld6Yb4oOITJ6wsnf6wjLTi89Hz8LCo4hMlLCI6M/vR5a3gtxLTgfB0c6zl1JgkOYfJswfGR/N5h1IzgcHB1G0wSHMLkxSLy1+HppI2bEpz1RJNPPE4DdeCvBHL93XY/8pWBJ75VWVd+X8EhTB7XEwYWIvN5QUiybOozldNlOQ3UI15H7yvkO35djJgmvJYZnyNoJzOb4LYeJo/K6B885LUsG32mceqxGf2Dekh/KPqRFOQIn+M0SVZwCJPH9eTnePuQEmfqczc2Iw3UhW+W/J2c0tKCG+9znCbJCg5h8rieMLASiew3Ktv7HPp29cTYOQ3Uxa0BwuTZ0N2oe6JE38OC0/prX26JMHluf278ssjpsqz8zGV4YQi3iPiV8qB0AlHrwELq/K3nY+K6XcdQLvY52SaTFRyBMHnz4O+mLP4gdqssOF2KgmMQJm86bqva3k35u4NVBpw2gwWHMHkATGew4AAA04HgAKhIJ7gbN24AABbGCc7KAAAswwuXLl1qAAA1uNT8H+LjmdeWz8fGAAAAAElFTkSuQmCC" alt="" />
在 Condition 对象中,与 wait、notify 和 notifyAll 方法对应的分别是
                                       await、signal 和 signalAll。
Condition 实例实质上被绑定到一个锁上。
要为特定 Lock 实例获得 Condition 实例,请使用其 newCondition() 方法。

package com.wf.zhang.juc;

import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock; /*
* 生产者消费者案例:
*/
public class TestProductorAndConsumerForLock { public static void main(String[] args) {
Clerk clerk = new Clerk(); Productor pro = new Productor(clerk);
Consumer con = new Consumer(clerk); new Thread(pro, "生产者 A").start();
new Thread(con, "消费者 B").start(); // new Thread(pro, "生产者 C").start();
// new Thread(con, "消费者 D").start();
} } class Clerk {
private int product = 0; private Lock lock = new ReentrantLock();
private Condition condition = lock.newCondition(); // 进货
public void get() {
lock.lock(); try {
if (product >= 1) { // 为了避免虚假唤醒,应该总是使用在循环中。
System.out.println("产品已满!"); try {
condition.await();
} catch (InterruptedException e) {
} }
System.out.println(Thread.currentThread().getName() + " : "
+ ++product); condition.signalAll();
} finally {
lock.unlock();
} } // 卖货
public void sale() {
lock.lock(); try {
if (product <= 0) {
System.out.println("缺货!"); try {
condition.await();
} catch (InterruptedException e) {
}
} System.out.println(Thread.currentThread().getName() + " : "
+ --product); condition.signalAll(); } finally {
lock.unlock();
}
}
} // 生产者
class Productor implements Runnable { private Clerk clerk; public Productor(Clerk clerk) {
this.clerk = clerk;
} @Override
public void run() {
for (int i = 0; i < 20; i++) {
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
} clerk.get();
}
}
} // 消费者
class Consumer implements Runnable { private Clerk clerk; public Consumer(Clerk clerk) {
this.clerk = clerk;
} @Override
public void run() {
for (int i = 0; i < 20; i++) {
clerk.sale();
}
} }

JUC-8-lock和Condition使用的更多相关文章

  1. 四、线程同步之Lock和Condition

    Lock同步锁 Lock 在jdk1.5  提供了Lock以便执行同步操作,和synchronized不同的是Lock提供了显示的方法获取锁和释放锁.Lock提供了以下几个方法,请求和释放锁: voi ...

  2. 线程高级应用-心得5-java5线程并发库中Lock和Condition实现线程同步通讯

    1.Lock相关知识介绍 好比我同时种了几块地的麦子,然后就等待收割.收割时,则是哪块先熟了,先收割哪块. 下面举一个面试题的例子来引出Lock缓存读写锁的案例,一个load()和get()方法返回值 ...

  3. 【Java线程】Lock、Condition

    http://www.infoq.com/cn/articles/java-memory-model-5  深入理解Java内存模型(五)——锁 http://www.ibm.com/develope ...

  4. 【Java线程】锁机制:synchronized、Lock、Condition

    http://www.infoq.com/cn/articles/java-memory-model-5  深入理解Java内存模型(五)——锁 http://www.ibm.com/develope ...

  5. 并发之lock的condition接口

    13.死磕Java并发-----J.U.C之Condition 12.Condition使用总结 11.Java并发编程系列之十七:Condition接口 === 13.死磕Java并发-----J. ...

  6. Lock和Condition在JDK中LinkedBlockingQueue的应用

    Lock和Condition在JDK中LinkedBlockingQueue的应用,核心源码注释解析如下: import java.util.concurrent.LinkedBlockingQueu ...

  7. java并发编程系列三、Lock和Condition

    有了synchronized为什么还要Lock? 因为Lock和synchronized比较有如下优点 1. 尝试非阻塞地获取锁 2. 获取锁的过程可以被中断 3. 超时获取锁 Lock的标准用法 p ...

  8. 多线程系列三:Lock和Condition

    有了synchronized为什么还要Lock? 因为Lock和synchronized比较有如下优点 1. 尝试非阻塞地获取锁 2. 获取锁的过程可以被中断 3. 超时获取锁 Lock的标准用法 p ...

  9. Lock和Condition

    1 什么是可重入锁 可重入锁是说一个线程在已经获取了该锁的情况下,还可以再次获取该锁. 主要的应用场景: 可重入锁指的是在一个线程中可以多次获取同一把锁,比如:一个线程在执行一个带锁的方法,该方法中又 ...

  10. 【Java线程】锁机制:synchronized、Lock、Condition(转)

    原文地址 1.synchronized 把代码块声明为 synchronized,有两个重要后果,通常是指该代码具有 原子性(atomicity)和 可见性(visibility). 1.1 原子性 ...

随机推荐

  1. js 对象 / json / jsonb / jsonp 区别

    一.JSON vs JS 对象 1.区别 区别 Javascript 对象 Json 含义 对象的实例 一种数据格式(序列化格式) 传输 不能传输 可以跨平台传输,轻量级 格式 1.键不加引号.加单引 ...

  2. aop的应用和简单原理

    实现过程: 1.pom引包 <dependency> <groupId>org.springframework.boot</groupId> <artifac ...

  3. Dubbo学习系列之十(Sentinel之限流与降级)

    各位看官,先提个问题,如果让你设计一套秒杀系统,核心要点是啥???我认为有三点:缓存.限流和分离.想当年12306大面积崩溃,还有如今的微博整体宕机情况,感觉就是限流降级没做好,"用有限的资 ...

  4. python实现智能语音天气预报

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 飞奔的帅帅 PS:如有需要Python学习资料的小伙伴可以加点击下 ...

  5. postgreSQL安装教程 Windows

    Windows 上安装 PostgreSQL 这里使用 EnterpriseDB 来下载安装,EnterpriseDB 是全球唯一一家提供基于 PostgreSQL 企业级产品与服务的厂商. 下载地址 ...

  6. 发送RCS 消息摘录相关成功log

    //11-25 16:48:09.612102  2175  2726 I BugleDataModel: PendingMessagesProcessor: process from InsertN ...

  7. Android TeaScreenPopupWindow多类型筛选弹框

    多类型筛选弹框.多数据筛选.多样化diy.单选or多选.必藏 (Multiple Type Screening Boxes, Multiple Data Screening, Diversified ...

  8. 【好书推荐】《剑指Offer》之硬技能(编程题7~11)

    本文例子完整源码地址:https://github.com/yu-linfeng/BlogRepositories/tree/master/repositories/sword <[好书推荐]& ...

  9. Excel上下标如何设置?

    Excel表格怎么设置上下标?Excel上下标设置技巧 在21世纪的我们,平时的工作和学习中,经常会使用到一些专业的文档,比如方程式.数据的公式和科学计数等,其中均会涉及到许多的上下标符号输入以及使用 ...

  10. Git入门基础教程

    目录 一.Git的安装 1.1 图形化界面 1.2 命令行界面 二.本地仓库的创建与提交 2.1 图形化界面 2.1.1 首先在电脑上有一个空白目录 2.1.2 打开SourceTree 2.1.3 ...