当前位置: 首页> 汽车> 新车 > 网站的建设流程是什么_设计平台模式_品牌整合营销推广_微信广告朋友圈投放

网站的建设流程是什么_设计平台模式_品牌整合营销推广_微信广告朋友圈投放

时间:2025/7/10 7:56:11来源:https://blog.csdn.net/liuminglei1987/article/details/143208061 浏览次数: 0次
网站的建设流程是什么_设计平台模式_品牌整合营销推广_微信广告朋友圈投放

要使用三个线程按顺序循环打印123三个数字,势必要控制线程的执行顺序,可以使用java.util.concurrent包中的Semaphore类来控制线程的执行顺序。

 代码示例

import java.util.concurrent.Semaphore;public class SequentialPrinting123 {private static Semaphore sem1 = new Semaphore(1);private static Semaphore sem2 = new Semaphore(0);private static Semaphore sem3 = new Semaphore(0);public static void main(String[] args) {Thread thread1 = new Thread(() -> {try {for (int i = 0; i < 3; i++) { // 打印3次sem1.acquire();System.out.print(1);sem2.release();}} catch (InterruptedException e) {Thread.currentThread().interrupt();}});Thread thread2 = new Thread(() -> {try {for (int i = 0; i < 3; i++) { // 打印3次sem2.acquire();System.out.print(2);sem3.release();}} catch (InterruptedException e) {Thread.currentThread().interrupt();}});Thread thread3 = new Thread(() -> {try {for (int i = 0; i < 3; i++) { // 打印3次sem3.acquire();System.out.print(3);sem1.release();}} catch (InterruptedException e) {Thread.currentThread().interrupt();}});thread1.start();thread2.start();thread3.start();}
}

解释

1. Semaphore初始化

  • sem1初始许可数为1,表示线程1可以立即执行。
  • sem2和sem3初始许可数为0,表示线程2和线程3需要等待。

2. 线程1

  • 获取sem1的许可(立即可以获得)。
  • 打印“1”。
  • 释放sem2的许可,允许线程2执行。

3. 线程2

  • 获取sem2的许可(由线程1释放)。
  • 打印“2”。
  • 释放sem3的许可,允许线程3执行。

4. 线程3

  • 获取sem3的许可(由线程2释放)。
  • 打印“3”。
  • 释放sem1的许可,允许线程1再次执行。

通过这种方式,三个线程可以按顺序循环打印“123”。每个线程在打印完自己的数字后,会释放下一个线程的许可,从而实现顺序控制。

关键字:网站的建设流程是什么_设计平台模式_品牌整合营销推广_微信广告朋友圈投放

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: