功能:也是通过阻塞控制线程数量.类似信号量\进程池\线程池的作用

语法:wait

from threading import Condition

con= Condition()

conn.acquire()

conn.wait() 也可以传参指定等待时间,不传参相当于阻塞,根据notify数量放行

wait下面写上相应逻辑代码

con.release()

#语法: notify 使用前后加阻塞

con.acquire()

con.notify(5) 括号内自定义线程放行的数量,默认放行1个

con.release()

例:

from threading import Condition,Thread
import time def func(con,index):
print("%s在等待" % index)
con.acquire()
# 添加阻塞
con.wait()
print("%s do everyting" % index)
con.release() con = Condition() for i in range(10):
t = Thread(target=func,args = (con,i))
t.start() # 写法一:传参数指定放行个数
con.acquire()
con.notify(5) # 不加参数(默认放行1个)
con.release() # 写法二:动态输入放行个数
# count = 10
# while count > 0:
# num = int(input(">>>\n"))
# con.acquire()
# # 放行线程 num 动态赋予的值
# con.notify(num)
# con.release()
# count -= num

执行结果:程序只有放行完才会结束,不然会一直在阻塞状态

0在等待
1在等待
2在等待
3在等待
4在等待
5在等待
6在等待
7在等待
8在等待
9在等待
1 do everyting
2 do everyting
4 do everyting
0 do everyting
3 do everyting

(15)线程---Condition条件的更多相关文章

  1. python线程condition条件锁应用实例

    import time import threading # 吃火锅鱼丸 guo = [] suo = threading.Condition() #条件锁 # 生产者负责生产 class Produ ...

  2. Java线程:条件变量、原子量、线程池等

    一.条件变量 条件变量实现了java.util.concurrent.locks.Condition接口,条件变量的实例化就是通过一个Lock对象上调用newCondition()方法获得的,这样条件 ...

  3. 《java.util.concurrent 包源码阅读》15 线程池系列之ScheduledThreadPoolExecutor 第二部分

    这篇文章主要说说DelayedWorkQueue. 在ScheduledThreadPoolExecutor使用DelayedWorkQueue来存放要执行的任务,因为这些任务是带有延迟的,而每次执行 ...

  4. java并发多线程显式锁Condition条件简介分析与监视器 多线程下篇(四)

    Lock接口提供了方法Condition newCondition();用于获取对应锁的条件,可以在这个条件对象上调用监视器方法 可以理解为,原本借助于synchronized关键字以及锁对象,配备了 ...

  5. Java多线程——Condition条件

    简介 Condition中的await()方法相当于Object的wait()方法,Condition中的signal()方法相当于Object的notify()方法,Condition中的signa ...

  6. Java并发(十一):Condition条件

    先做总结: 1.为什么使用Condition条件? synchronized配合Object的wait().notify()系列方法可以实现等待/通知模式. Lock提供了条件Condition,对线 ...

  7. Java并发包源码学习系列:详解Condition条件队列、signal和await

    目录 Condition接口 AQS条件变量的支持之ConditionObject内部类 回顾AQS中的Node void await() 添加到条件队列 Node addConditionWaite ...

  8. Linux线程同步——条件变量

    互斥锁是用来给资源上锁的,而条件变量是用来等待而不是用来上锁的. 条件变量用来自动阻塞一个线程,直到某特殊情况发生为止. 通常条件变量和互斥锁同时使用. 和条件变量使用有关的几个重要函数: int p ...

  9. Mybatis-plus中的condition条件

    @Test public void testCondition() { String name = "王"; String email = ""; condit ...

随机推荐

  1. linux 强制删除杀死进程 sudo pkill uwsgi -9 杀死uwsgi 关闭防火墙 iptables -F

    sudo pkill -f uwsgi -9 四.关闭防火强        iptables -F  #清空规则        systemctl stop firewalld  #关闭防火墙服务   ...

  2. .net 问题

    1.socket初始化三个步骤 2.多线程 3.mvc的理解

  3. [iptables] 如何用iptables管理桥接模式下的设备

    场景:qemu虚拟机通过tap设备与host的物理网卡通过bridge桥接上网. 如下: [root@host100 ~]# brctl show bridge name bridge id STP ...

  4. LeetCode 237 Delete Node in a Linked List 解题报告

    题目要求 Write a function to delete a node (except the tail) in a singly linked list, given only access ...

  5. svn 目录

    svn介绍 SVN与Git的区别 SVN服务的模式和多种访问方式 多种访问原理图解与优缺点 SVN安装部署 svn 部署 配置 配置svn用户及密码 配置svn用户及权限 svn 启动命令讲解 svn ...

  6. 小程序图表wx-chart

    下载地址 https://github.com/xiaolin3303/wx-charts 使用步骤: 一.解压后,把dist里面的wxcharts.js或者wxcharts-min.js放在小程序的 ...

  7. DOIS 2019 DevOps国际峰会北京站来袭~

    DevOps 国际峰会是国内唯一的国际性 DevOps 技术峰会,由 OSCAR 联盟指导.DevOps 时代社区与高效运维社区联合主办,共邀全球80余名顶级专家畅谈 DevOps 体系与方法.过程与 ...

  8. 《linux就该这么学》第六节,计划任务和用户身份管理!

    课本笔记:          case条件测试语句 4.4:计划任务服务 at 设置一次性计划任务 at  时间    //设置执行的任务                              a ...

  9. Python str byte 互相转换

  10. MySQL Workbench在archlinux中出现 Could not store password: The name org.freedesktop.secrets was not provided by any .service files的错误

    MySQL Workbench在archlinux中出现 Could not store password: The name org.freedesktop.secrets was not prov ...