题目 2 :
一座小桥(最多只能承重两个人)横跨南北两岸,
任意时刻同一方向只允许一人过桥,南侧桥段和北侧桥段
较窄只能通过一人,桥中央一处宽敞,允许两个人通过或
歇息。要求:

① 请用 PV 操作为同步机制写出它们能正确并发执行的伪代码;
② 请用你熟悉的线程库编程实现此并发程序,并模型桥两岸各 25 人过桥的情况。

答案在这=》

import threading
import time
from concurrent.futures import ThreadPoolExecutorEmpty = threading.Semaphore(16)
N = threading.Lock()
S = threading.Lock()def NtoS(id):Empty.acquire()N.acquire()print(id + "走在北桥!")N.release()S.acquire()print(id + "走在南桥!")S.release()Empty.release()def StoN(id):Empty.acquire()S.acquire()print(id + "走在南桥!")S.release()N.acquire()print(id + "走在北桥!")N.release()Empty.release()if __name__ == "__main__":Threading_Pool = ThreadPoolExecutor(max_workers=50)for i in range(25):Threading_Pool.submit(NtoS, "NtoS"+str(i))for j in range(25):Threading_Pool.submit(NtoS, "StoN"+str(j))

操作系统问题二、经典过桥问题(线程池)相关推荐

  1. 应用程序进程(二):启动线程池

    多线程并发知识库 JAVA线程实现/创建的四种方式 1.继承Thread类 Thread类本质上是实现了Runnable接口的一个实例,代表一个线程的实例.启动线程的唯一方法就是通过Thread类的s ...

  2. 【操作系统】操作系统知识点整理;C++ 实现线程池与windows 线程池的使用;

    文章目录 体系结构 冯诺依曼 存储结构 cache常见的组织结构 cache命中 缓存一致性 硬中断.软中断 操作系统结构 内核 Linux宏内核 内存管理 虚拟内存 内存管理 - 分段 - 分页 - ...

  3. Java面试经典题:线程池的成长之路

    本文转载自公众号: 猿天地 1.背景 相信大家在面试过程中遇到面试官问线程的很多,线程过后就是线程池了.从易到难,都是这么个过程,还有就是确实很多人在工作中接触线程池比较少,最多的也就是创建一个然后往 ...

  4. Java并发(二十一):线程池实现原理

    一.总览 线程池类ThreadPoolExecutor的相关类需要先了解: (图片来自:https://javadoop.com/post/java-thread-pool#%E6%80%BB%E8% ...

  5. Java核心(二)深入理解线程池ThreadPool

    本文你将获得以下信息: 线程池源码解读 线程池执行流程分析 带返回值的线程池实现 延迟线程池实现 为了方便读者理解,本文会由浅入深,先从线程池的使用开始再延伸到源码解读和源码分析等高级内容,读者可根据 ...

  6. Java提高班(二)深入理解线程池ThreadPool

    本文你将获得以下信息: 线程池源码解读 线程池执行流程分析 带返回值的线程池实现 延迟线程池实现 为了方便读者理解,本文会由浅入深,先从线程池的使用开始再延伸到源码解读和源码分析等高级内容,读者可根据 ...

  7. Spring Boot系列二 Spring @Async异步线程池用法总结

    转载 自 https://blog.csdn.net/hry2015/article/details/67640534 1. TaskExecutor Spring异步线程池的接口类,其实质是java ...

  8. 经典面试题-线程池七大参数

    线程池七大参数 corePoolSize 核心线程数目 - 池中会保留的最多线程数 maximumPoolSize 最大线程数目 - 核心线程+救急线程的最大数目 keepAliveTime 生存时间 ...

  9. 小豹子带你看源码:Java 线程池(二)实例化

    承上启下:上一篇文章小豹子讲了我为什么想要研究线程池的代码,以及我计划要怎样阅读代码.这篇文章我主要阅读了线程池实例化相关的代码,并提出了自己的疑问. 3 千里之行,始于实例化 3.1 先创建一个线程 ...

  10. 【二十四】springboot使用EasyExcel和线程池实现多线程导入Excel数据

      springboot篇章整体栏目:  [一]springboot整合swagger(超详细 [二]springboot整合swagger(自定义)(超详细) [三]springboot整合toke ...

最新文章

  1. 小程序 sha1和服务器有关系吗,微信小程序使用sha1实现密码加密的方法介绍
  2. Android入门(九)文件存储与SharedPreferences存储
  3. java weka命令行_使用自己的Java代码和模型获取WEKA中的预测百分比
  4. CV之FR:DIY脚本通过人脸图像得到人脸特征向量并输出多张人脸图片之两两图片之间的距离
  5. mysql自带加密解密字符集问题
  6. activemq中怎么知道推送消息是否成功_如何优雅的使用activeMQ 安装、应用、安全认证、持久化...
  7. 一步一步使用Ext JS MVC与Asp.Net MVC 3开发简单的CMS后台管理系统之创建项目
  8. 超级简单:ASP.NET输出缓存
  9. 人脸识别接口_人脸识别双目摄像头模组应用系统
  10. 优达前端课程免费分享
  11. html中怎样写渐变色代码,html颜色渐变代码 怎样用css实现网页背景颜色渐变
  12. “下一代智能硬件Web应用防火墙”——创宇盾X完成统信互认
  13. Python运维开发入门到精通学习 Day3
  14. 利用mysql物理文件(*.ibd,*.frm)回复数据
  15. 破物联网大数据难题,百度天工物联网平台上线时序数据库服务
  16. Polygon已在测试网中实现EIP-1559
  17. F28335舵机控制器(4)——第三版PCB配套程序
  18. 郑州轻工业oj平台(1000题-1010题)
  19. 代码坏味道 之 7 依恋情结 feature envy
  20. 2020年总结与展望

热门文章

  1. 【微信公众号】微信集成功能--扫描二维码完成用户登录操作
  2. 虚幻引擎5 C++编程学习3
  3. Teradata计算时间戳差值(分钟)
  4. java探险,Java 探险之旅 (0)
  5. Java生成二维码并以IO流的形式返回给前端展示(不需写入服务器),以及下载二维码图片
  6. 计算机专业考研选学校好,计算机专业考研选什么学校比较好?
  7. Java中cvc是什么意思_什么是英语CVC?
  8. Kerberos 学习笔记
  9. 缺图源?来看这个好用且惊艳的在线卫星地图!可添加奥维和GIS软件
  10. java传递父线程对象_父子线程和线程池如何实现threadLocal变量传递