并发编程
程序员卤蛋
这个作者很懒,什么都没留下…
展开
-
线程池大小设置
线程数如何设置可以参考《Java并发编程实战》这本书给出的建议,如下图:就是这个公式:threads = N CPU * U CPU * (1 + W/C)其中:N CPU 是处理器的核数 U CPU 是期望的CPU利用率(介于0和1之间) W/C是等待时间与计算时间的比率‘网上也有这么区分的:如果服务是cpu密集型的,设置为电脑的核数如果服务是io密集型的,设置为电脑的核数*2其实我觉得并不严谨,尤其是io密集型的还要参考QPS和web服务器的配置。参..原创 2021-04-21 10:57:13 · 128 阅读 · 0 评论 -
【并发编程】Semaphore
Semaphore翻译成字面意思为信号量。Semaphore可以控同时访问的线程个数,通过 acquire() 获取一个许可,如果没有就等待,而 release() 释放一个许可。假若一个工厂有5台机器,但是有8个工人,一台机器同时只能被一个工人使用,只有使用完了,其他工人才能继续使用。那么我们就可以通过Semaphore来实现: public static void main(String[] args) { int N = 8; //工人数原创 2020-07-12 18:07:02 · 124 阅读 · 0 评论 -
【并发编程】CyclicBarrier
字面意思回环栅栏,通过它可以实现让一组线程等待至某个状态之后再全部同时执行。CyclicBarrier类位于java.util.concurrent包下,CyclicBarrier提供2个构造器:public CyclicBarrier(int parties, Runnable barrierAction) {}public CyclicBarrier(int parties) {}然后CyclicBarrier中最重要的方法就是await方法,它有2个重载版本:参数parti原创 2020-07-12 18:05:15 · 103 阅读 · 0 评论 -
【并发编程】CountDownLatch
CountDownLatch类位于java.util.concurrent包下,利用它可以实现类似计数器的功能。比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行,此时就可以利用CountDownLatch来实现这种功能了。CountDownLatch类只提供了一个构造器:public CountDownLatch(int count) { }; //参数count为计数值然后下面这3个方法是CountDownLatch类中最重要的方法:public void await..原创 2020-07-12 13:29:42 · 75 阅读 · 0 评论