处理api中的线程数

时间:2012-04-02 09:19:16

标签: java multithreading threadpool

我有一个可以被多个应用程序使用的api。我想管理我的api,以便每个应用程序只处理固定数量的请求。假设app。 X提供了大约30个请求,我允许这个特定的应用程序使用我的api。所以我只允许20个线程并将其他线程标记为等待,所有api应该做类似的事情。

最好的方法是什么。

2 个答案:

答案 0 :(得分:2)

怎么看:

ExecutorService.newFixedThreadPool(int nThreads)

Executers on Java 1.5

答案 1 :(得分:0)

您正在寻找的是一个信号量。 java中的类是

java.util.concurrent.Semaphore

中创建一个信号量
mysem = new Semaphore(20);

然后在您的API中执行以下操作

void myAPI()  {
        mysem.acquire();
        //My API logic comes here
        finally {
           mysem.release();
        }
    }