java多线程怎么控制并发数 怎么实现线程排队

起首是近似的案例 , 好比说列队买票的问题 , 假若有20小我一路买票 , 只有两个窗口 , 怎么实现
阐发:
人=线程
2个窗口--资本
在窗口买票=线程正在执行
分开线程执行完毕
期待买票=线程梗阻

需要这些哦
旌旗灯号量
Semaphore
方式/
1起首明白旌旗灯号量Semaphore的用法 , 然后新建一个项目 , new-->file-->class , 随意定名 , 此处定名为semaphoreDemo

java多线程怎么控制并发数 怎么实现线程排队

文章插图

2起首起头一个线程MyTask , 实现接口 , 然后在此中界说窗口买票的流程 , 本家儿要有进入 , 买完了 , 分开 , 然后释放旌旗灯号量 , 让下一个进入

java多线程怎么控制并发数 怎么实现线程排队

文章插图

3然后设定一个旌旗灯号量 , 本家儿如果执行函数 , 此处界说窗口个数 , 然后界说线程池ExecutorService , 轮回执行这20小我

java多线程怎么控制并发数 怎么实现线程排队

文章插图

4最后经由过程main函数挪用execute函数进行列队问题 , 起头列队线程

java多线程怎么控制并发数 怎么实现线程排队

文章插图

5【java多线程怎么控制并发数 怎么实现线程排队】在打印中可以看到两个线程在并发执行 , 剩下的人处于列队状况 , 只有上一个执行完了下一个才执行

java多线程怎么控制并发数 怎么实现线程排队

文章插图

注重事项线程旌旗灯号量semaphore , 本家儿要用于节制并发数

以上内容就是java多线程怎么控制并发数 怎么实现线程排队的内容啦 , 希望对你有所帮助哦!

    推荐阅读