java併發編程筆記(二)——併發工具

java併發編程筆記(二)——併發工具

工具:java

  • Postman:http請求模擬工具
  • Apache Bench(AB):Apache附帶的工具,測試網站性能
  • JMeter:Apache組織開發的壓力測試工具
  • 代碼:Semaphone、CountDownLatch等

PostMan:

Apache Bench(AB)

ab -n [請求總數] -c [本次請求的併發數是50] [url]
例如:ab -1000 -c 50 http://www.baidu.com

JMeter

一個圖形化的工具,功能很強大編程

代碼測試模擬併發

CountDownLatch

T一、T二、T3每次執行都會將計數器減1,線程A在計數器減爲0的時候,纔會執行。併發

可以保證某一個線程在其餘線程執行完以後再執行的需求工具

Semaphore(信號量)

同一時刻並行的線程數量性能

主要用來控制同時併發數測試

併發場景模擬網站

public class ConcurrencyTest {

    // 請求總數
    public static int clientTotal = 5000;

    // 同時併發執行的線程數
    public static int threadTotal = 200;

    public static int count = 0;

    public static void main(String[] args) throws Exception {
        ExecutorService executorService = Executors.newCachedThreadPool();
        final Semaphore semaphore = new Semaphore(threadTotal);
        final CountDownLatch countDownLatch = new CountDownLatch(clientTotal);
        for (int i = 0; i < clientTotal ; i++) {
            executorService.execute(() -> {
                try {
                    semaphore.acquire();
                    add();
                    semaphore.release();
                } catch (Exception e) {
                    log.error("exception", e);
                }
                countDownLatch.countDown();
            });
        }
        countDownLatch.await();
        executorService.shutdown();
        log.info("count:{}", count);
    }

    private static void add() {
        count++;
    }
}
相關文章
相關標籤/搜索