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. 打印零与奇偶数相关推荐

  1. LeetCode 1116. 打印零与奇偶数

    假设有这么一个类: class ZeroEvenOdd {public ZeroEvenOdd(int n) { ... } // 构造函数public void zero(printNumber) ...

  2. (多线程)leetcode1116. 打印零与奇偶数

    假设有这么一个类: class ZeroEvenOdd {   public ZeroEvenOdd(int n) { ... }      // 构造函数   public void zero(pr ...

  3. LeetCode之打印零与奇偶数golang与java实现

    1.题目 2.java锁思路 对于java可以采用一个锁和三个Condition来实现,用一个标志标识要打印0,不打印0时,zeroCondition await.然后用一个数字记录当前要打印的数,当 ...

  4. 打印零与奇偶数 思路分析

    1116. 打印零与奇偶数 假设有这么一个类: class ZeroEvenOdd {public ZeroEvenOdd(int n) { ... } // 构造函数public void zero ...

  5. java go多线程:两个线程交替打印 0~100 的奇偶数

    最近在实现raft算法,用到了很多go的高并发的知识,看到一道题写两个线程交替打印 1~100 的奇偶数,突然来了兴趣. 题目要求我们要启动两个线程,一个打印奇数,一个打印偶数.中途不能跳出协程. 代 ...

  6. 线程打印_面试题:用程序实现两个线程交替打印 0~100 的奇偶数

    作者:dadiyang来源:https://blog.csdn.net/dadiyang/article/details/88315124 面试场景 面试官:Java多线程了解吗?你给我写一下,起两个 ...

  7. 1119: 零起点学算法26——判断奇偶数

    1119: 零起点学算法26--判断奇偶数 Time Limit: 1 Sec  Memory Limit: 64 MB   64bit IO Format: %lld Submitted: 2419 ...

  8. c语言利用线程交替打印奇偶数,两个线程交替打印奇偶数

    序言 以前看过多线程交替打印奇偶数,知道大概怎么写,实际写的时候会卡住,特此记录下来 方法一:wait, notify,性能较差,不推荐使用 public class TestThread { pub ...

  9. 课后作业--Python语言打印菱形(奇、偶数行效果)

    上周留的Python作业觉着很值得写一篇帖子用来存放,它这就慢慢地走来咯~ 使用for循环.range函数和if else条件语句,打印奇数行.偶数行效果不一的菱形. 效果分析: 实现代码: #用户要 ...

最新文章

  1. Unable to get repr for<class‘torch.Tensor‘>
  2. android java 给控件设置style,在Android Lollipop for Material Design中为SwitchCompat按钮设置样式/着色...
  3. 中介者模式(Mediator Pattern)
  4. 蒙文字体怎么安装_焘哥带你玩转字体(三)字体的安装及显示问题
  5. Django中static media的简单配置及图片上传实践
  6. oracle 7 客户端,windows 7环境下配置oracle 11g 客户端
  7. Project Euler:Problem 39 Integer right triangles
  8. 百合佳缘、珍爱网等平台严重侵犯消费者权益被约谈
  9. opc读取ab的plc数据_使用OPC的模式去连接PLC进行AB SLC-5_04数据的采集
  10. module 'tensorflow.python.keras.backend' has no attribute 'get_graph'
  11. cron 在线表达式
  12. 【C++】(八)函数
  13. java基于springboot的ktv点歌管理系统附源码
  14. 虚拟机的服务器管理器怎么打开,虚拟机启动任务管理器
  15. 【光斑PSF处理】激光光斑数据处理含matlab源码-含文档【0102期】
  16. ttl传输中过期可能是什么原因_ttl传输中过期怎么解决
  17. 更新DOTA2显示无法连接到更新服务器,DOTA2无法正常更新的解决方法 官方公告
  18. 易语言解析网页内容替换换行符问题
  19. mac之间迁移微信聊天记录
  20. Cadence 17.4 中文菜单

热门文章

  1. 【Task】- JVM逃逸分析等待学习任务
  2. 谈谈一些有趣的CSS题目(十七)-- 不可思议的颜色混合模式 mix-blend-mode
  3. web开发中的长度单位(px,em,ex,rem),如何运用,看完这篇就够了!
  4. asp.net MVC分页
  5. Freescale MC9S08AW60汇编学习笔记(五)
  6. [2014NoDEA]An Osgood type regularity criterion for the liquid crystal flows
  7. 微信小程序学习日记day1
  8. MySQL根被拒绝_[转载]phpMyAdmin 尝试连接到 MySQL 服务器,但服务器拒绝连接。...
  9. python自动控制_程序员用Python实现自动化控制键盘和鼠标
  10. java jms clust,Geoserver 的 JMS Cluster modules(集群数据同步)