多语言展示
当前在线:1667今日阅读:176今日分享:34

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

首先是类似的案例,比如说排队买票的问题,假如有20个人一起买票,只有两个窗口,怎么实现分析:人=线程2个窗口--资源在窗口买票=线程正在执行离开线程执行完毕等待买票=线程阻塞
工具/原料
1

信号量

2

Semaphore

方法/步骤
1

首先明确信号量Semaphore的用法,然后新建一个项目,new-->file-->class,随意命名,此处命名为semaphoreDemo

2

首先开始一个线程MyTask,实现接口,然后在其中定义窗口买票的流程,主要有进入,买完了,离开,然后释放信号量,让下一个进入

3

然后设定一个信号量,主要是执行函数,此处定义窗口个数,然后定义线程池ExecutorService,循环执行这20个人

4

最后通过main函数调用execute函数进行排队问题,开始排队线程

5

在打印中可以看到两个线程在并发执行,剩下的人处于排队状态,只有上一个执行完了下一个才执行

注意事项

线程信号量semaphore,主要用于控制并发数

推荐信息