这是家庭作业,但我只是在寻找正确方向的插入(而不是有人为我做我的工作)。
- 我有四个线程
- 它们各自循环打印出自己的数字:分别为 1、2、4 和 8
- 在主程序开始时,我必须启动所有四个线程,然后在 500 毫秒后结束它们
- 我要使用信号量来确保只有这些数字以这种重复模式打印:111111112222448111111112222448111111112222448……
- 我不会使用 while、for、if、else 等。
- 我正在使用 Java
我不知道如何在不使用 if 语句的情况下明确地打印出该模式,而且我对信号量非常不熟悉,对线程也只有一点熟悉。
哪位好心人能给我指点一下吗?即使您只是向我指出精彩的视频或文章,我也会感激不尽。
编辑:抱歉。我让事情变得困惑了。每个线程内已经为我定义了 while 语句。每个 while 语句一次仅打印其中一个数字。例如:它打印“1”而不是“11111”。就是不允许我定义任何更多 while 语句等。
最佳答案
如果您使用 Java 的信号量,我假设对 acquire() 的调用会阻塞。因此,考虑到这一点,如果一个线程试图获取一个已被另一个线程获取的信号量,则它必须等待 直到可以免费获取
关于java - 如何在不使用 if-else、while、for 等的情况下使用信号量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19667495/