如何控制某個方法允許併發訪問執行緒的個數?

2021-09-11 20:17:32 字數 1927 閱讀 8726

semaphore兩個重要的方法就是

semaphore.acquire() 請求乙個訊號量,這時候的訊號量個數-1(一旦沒有可使用的訊號量,也即訊號量個數變為負數時,再次請求的時候就會阻塞,直到其他執行緒釋放了訊號量)

semaphore.release() 釋放乙個訊號量,此時訊號量個數+1

public

class

semaphoretest

}).start();}}

private

void

test()

catch (interruptedexception e)

system.out.println(thread.currentthread().getname() +

" 進來了");

try

catch (interruptedexception e)

system.out.println(thread.currentthread().getname() +

" 出去了");

msemaphore.release();}}

示例中例項化了具有5個訊號量的semaphore,保證只有5個執行緒在執行test方法

04-18

17: 05:

46.350

14192-

1228 進來了

04-18

17: 05:

46.351

14192-

1231 進來了

04-18

17: 05:

46.354

14192-

1233 進來了

04-18

17: 05:

46.354

14192-

1232 進來了

04-18

17: 05:

46.355

14192-

1234 進來了

04-18

17: 05:

47.351

14192-

1228 出去了

04-18

17: 05:

47.351

14192-

1236 進來了

04-18

17: 05:

47.352

14192-

1231 出去了

04-18

17: 05:

47.352

14192-

1235 進來了

04-18

17: 05:

47.354

14192-

1233 出去了

04-18

17: 05:

47.354

14192-

1237 進來了

04-18

17: 05:

47.354

14192-

1232 出去了

04-18

17: 05:

47.354

14192-

1229 進來了

04-18

17: 05:

47.356

14192-

1234 出去了

04-18

17: 05:

47.356

14192-

1230 進來了

04-18

17: 05:

48.351

14192-

1236 出去了

vsftpd配置只允許某個IP段進行訪問

3.etc hosts.allow 和 etc hosts.deny的關係 先從hosts.allow檔案中查詢允許的ip,如果找到就允許訪問,就不找hosts.deny檔案了,如果沒找到,就在hosts.deny中查詢,如果找到,就拒絕,沒找到,還是允許訪問。hosts.deny檔案格式 vsft...

Redis控制某個使用者每秒併發數量

前提 開始我們是在nginx做了併發數控制,但是後來由於業務需要 併發數越高,付費越高 我們想在自己後台實時控制使用者的併發數 nginx只做了最最大上限控制,我們後台的併發數都會控制在合理範圍內 就想到用redis在 層控制單個使用者數每秒併發量 設計 由於redis命令都是原值操作,則以user...

PostgreSQL 允許遠端訪問設定方法

安 裝postgresql資料庫之後,預設是只接受本地訪問連線。如果想在其他主機上訪問postgresql資料庫伺服器,就需要進行相應的配置。配置遠 程連線postgresql資料庫的步驟很簡單,只需要修改data目錄下的pg hba.conf和postgresql.conf。pg hba.conf...