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

首先是近似的案例,好比说列队买票的问题,假若有20小我一路买票,只有两个窗口,怎么实现

阐发:

人=线程

2个窗口--资本

在窗口买票=线程正在执行

分开线程执行完毕

期待买票=线程梗阻

工具/原料

  • 旌旗灯号量
  • Semaphore

方式/步骤

  1. 1

    首先明白旌旗灯号量Semaphore的用法,然后新建一个项目,new-->file-->class,随意定名,此处定名为semaphoreDemo

  2. 2

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

  3. 3

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

  4. 4

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

  5. 5

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

注重事项

  • 线程旌旗灯号量semaphore,本家儿要用于节制并发数
  • 发表于 2018-04-27 00:00
  • 阅读 ( 285 )
  • 分类:其他类型

相关问题

0 条评论

请先 登录 后评论