leetcode多线程之如何解决交替打印FooBar问题
发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,小编给大家分享一下leetcode多线程之如何解决交替打印FooBar问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!题
千家信息网最后更新 2025年01月24日leetcode多线程之如何解决交替打印FooBar问题
小编给大家分享一下leetcode多线程之如何解决交替打印FooBar问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
题目
我们提供一个类:class FooBar { public void foo() { for (int i = 0; i < n; i++) { print("foo"); } } public void bar() { for (int i = 0; i < n; i++) { print("bar"); } }}两个不同的线程将会共用一个 FooBar 实例。其中一个线程将会调用 foo() 方法,另一个线程将会调用 bar() 方法。请设计修改程序,以确保 "foobar" 被输出 n 次。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/print-foobar-alternately著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题解
class FooBar { private int n; ReentrantLock lock = new ReentrantLock(); Condition fooCnd = lock.newCondition(); Condition barCnd = lock.newCondition(); boolean foo = true; public FooBar(int n) { this.n = n; } public void foo(Runnable printFoo) throws InterruptedException { lock.lock(); try { for (int i = 0; i < n; i++) { if (!foo) { fooCnd.await(); } foo = false; // printFoo.run() outputs "foo". Do not change or remove this line. printFoo.run(); barCnd.signal(); } } finally { lock.unlock(); } } public void bar(Runnable printBar) throws InterruptedException { lock.lock(); try { for (int i = 0; i < n; i++) { if (foo) { barCnd.await(); } foo = true; // printBar.run() outputs "bar". Do not change or remove this line. printBar.run(); fooCnd.signal(); } } finally { lock.unlock(); } }}
这里使用ReentrantLock的condition来进行条件控制
以上是"leetcode多线程之如何解决交替打印FooBar问题"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
线程
篇文章
问题
内容
方法
不同
不怎么
两个
出处
商业
大部分
官方
实例
更多
条件
来源
知识
程序
网络
著作
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
人员外包软件开发方案
济南有哪些网络安全公司
何为关系数据库
綦江区网络安全审计系统咨询费用
理正工民建数据库转公路版
企业服务器价格表
联想服务器的管理ip
移动互联网和软件开发哪个好
临沂软件开发公司北明公司
侨居数据库
小学五年级网络安全内容
太东软件开发有限公司
上海品星互联网科技有限公司
幻塔服务器一览表
网络技术处理员含金量
无忧网络安全科技馆
率土之滨小米和网易服务器相通吗
安恒杯网络安全测试
中国最好的服务器
阿里自助建站数据库
电视连接网络安全性wep
腾讯软件开发应届生
荣耀7网络安全性被改了
重庆net软件开发哪家实惠
数据库安装好之后无法启动
广州紫网网络技术有限公司
重庆武隆食堂配送软件开发
永劫无间一共几个服务器
w7微软数据库
在数据库中的如下两个表