leetcode多线程之如何解决交替打印FooBar问题
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,小编给大家分享一下leetcode多线程之如何解决交替打印FooBar问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!题
千家信息网最后更新 2025年12月03日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安全错误
数据库的锁怎样保障安全
网络安全的感想500字
服务器管理和信息安全责任书
数据库实际值是5
新一代网络技术与应用期末
义乌打工网络技术有限公司
国家网络安全学院招聘
网络技术基础读书笔记
奶块为什么会有服务器维护
研究生 网络安全
怎么写mysql数据库
蓝天播放器苹果手机服务器异常
微信类软件开发费用
简单重复序列分析数据库
南通梵迪互联网科技有限公司
工业级软件开发
学软件开发专业好就业吗
倩女幽魂进不去服务器
剑三 网通服务器人多
java服务器安装视频
mc无管理服务器
java服务器编程
目前遥感数据库
数据库切片与切块
新野县网络安全保护
邀玩网络技术有限公司客服
银川软件开发专业学费
网络安全法国家实行
为什么网络安全的股票狂跌
许愿清单软件开发
上海5g服务器机柜哪家好