LeetCode 多线程 1116. 打印零与奇偶数
1116. 打印零与奇偶数
Ideas
有几个线程就用几个信号量,最先开始的信号量初始化为1,其它初始化为0,然后根据条件判断实现同步。
多线程的问题好多都是:锁自己,解锁别人。
Code
from threading import Semaphoreclass ZeroEvenOdd:def __init__(self, n):self.n = n + 1self.zero_lock = Semaphore(1)self.even_lock = Semaphore(0)self.odd_lock = Semaphore(0)# printNumber(x) outputs "x", where x is an integer.def zero(self, printNumber: 'Callable[[int], None]') -> None:for i in range(1, self.n):self.zero_lock.acquire()printNumber(0)if i % 2 == 1:self.odd_lock.release()else:self.even_lock.release()def even(self, printNumber: 'Callable[[int], None]') -> None:for i in range(2, self.n, 2):self.even_lock.acquire()printNumber(i)self.zero_lock.release()def odd(self, printNumber: 'Callable[[int], None]') -> None:for i in range(1, self.n, 2):self.odd_lock.acquire()printNumber(i)self.zero_lock.release()
LeetCode 多线程 1116. 打印零与奇偶数相关推荐
- LeetCode 1116. 打印零与奇偶数
假设有这么一个类: class ZeroEvenOdd {public ZeroEvenOdd(int n) { ... } // 构造函数public void zero(printNumber) ...
- (多线程)leetcode1116. 打印零与奇偶数
假设有这么一个类: class ZeroEvenOdd { public ZeroEvenOdd(int n) { ... } // 构造函数 public void zero(pr ...
- LeetCode之打印零与奇偶数golang与java实现
1.题目 2.java锁思路 对于java可以采用一个锁和三个Condition来实现,用一个标志标识要打印0,不打印0时,zeroCondition await.然后用一个数字记录当前要打印的数,当 ...
- 打印零与奇偶数 思路分析
1116. 打印零与奇偶数 假设有这么一个类: class ZeroEvenOdd {public ZeroEvenOdd(int n) { ... } // 构造函数public void zero ...
- java go多线程:两个线程交替打印 0~100 的奇偶数
最近在实现raft算法,用到了很多go的高并发的知识,看到一道题写两个线程交替打印 1~100 的奇偶数,突然来了兴趣. 题目要求我们要启动两个线程,一个打印奇数,一个打印偶数.中途不能跳出协程. 代 ...
- 线程打印_面试题:用程序实现两个线程交替打印 0~100 的奇偶数
作者:dadiyang来源:https://blog.csdn.net/dadiyang/article/details/88315124 面试场景 面试官:Java多线程了解吗?你给我写一下,起两个 ...
- 1119: 零起点学算法26——判断奇偶数
1119: 零起点学算法26--判断奇偶数 Time Limit: 1 Sec Memory Limit: 64 MB 64bit IO Format: %lld Submitted: 2419 ...
- c语言利用线程交替打印奇偶数,两个线程交替打印奇偶数
序言 以前看过多线程交替打印奇偶数,知道大概怎么写,实际写的时候会卡住,特此记录下来 方法一:wait, notify,性能较差,不推荐使用 public class TestThread { pub ...
- 课后作业--Python语言打印菱形(奇、偶数行效果)
上周留的Python作业觉着很值得写一篇帖子用来存放,它这就慢慢地走来咯~ 使用for循环.range函数和if else条件语句,打印奇数行.偶数行效果不一的菱形. 效果分析: 实现代码: #用户要 ...
最新文章
- Unable to get repr for<class‘torch.Tensor‘>
- android java 给控件设置style,在Android Lollipop for Material Design中为SwitchCompat按钮设置样式/着色...
- 中介者模式(Mediator Pattern)
- 蒙文字体怎么安装_焘哥带你玩转字体(三)字体的安装及显示问题
- Django中static media的简单配置及图片上传实践
- oracle 7 客户端,windows 7环境下配置oracle 11g 客户端
- Project Euler:Problem 39 Integer right triangles
- 百合佳缘、珍爱网等平台严重侵犯消费者权益被约谈
- opc读取ab的plc数据_使用OPC的模式去连接PLC进行AB SLC-5_04数据的采集
- module 'tensorflow.python.keras.backend' has no attribute 'get_graph'
- cron 在线表达式
- 【C++】(八)函数
- java基于springboot的ktv点歌管理系统附源码
- 虚拟机的服务器管理器怎么打开,虚拟机启动任务管理器
- 【光斑PSF处理】激光光斑数据处理含matlab源码-含文档【0102期】
- ttl传输中过期可能是什么原因_ttl传输中过期怎么解决
- 更新DOTA2显示无法连接到更新服务器,DOTA2无法正常更新的解决方法 官方公告
- 易语言解析网页内容替换换行符问题
- mac之间迁移微信聊天记录
- Cadence 17.4 中文菜单
热门文章
- 【Task】- JVM逃逸分析等待学习任务
- 谈谈一些有趣的CSS题目(十七)-- 不可思议的颜色混合模式 mix-blend-mode
- web开发中的长度单位(px,em,ex,rem),如何运用,看完这篇就够了!
- asp.net MVC分页
- Freescale MC9S08AW60汇编学习笔记(五)
- [2014NoDEA]An Osgood type regularity criterion for the liquid crystal flows
- 微信小程序学习日记day1
- MySQL根被拒绝_[转载]phpMyAdmin 尝试连接到 MySQL 服务器,但服务器拒绝连接。...
- python自动控制_程序员用Python实现自动化控制键盘和鼠标
- java jms clust,Geoserver 的 JMS Cluster modules(集群数据同步)