摘要: 假设服务器有一个computer复杂运算,耗时较久,如果服务器要实现缓存,一种思路就是通过HashMap或者redis来做缓存 下面是使用HashMap的简单示例,源码取自《并发编程实战》 1 package net.jcip.examples; 2 3 import java.math.BigIn 阅读全文
posted @ 2021-01-31 15:32 苏黎世湖畔 阅读(125) 评论(0) 推荐(0)
摘要: 1 import java.util.concurrent.Exchanger; 2 import java.util.concurrent.ExecutorService; 3 import java.util.concurrent.Executors; 4 5 /** 6 * @author s 阅读全文
posted @ 2021-01-31 14:53 苏黎世湖畔 阅读(64) 评论(0) 推荐(0)
摘要: 先抛个问题,如果一个线程池的核心线程是5,目前3个核心线程被创建,其中1个在运行,2个空闲,缓存队列为空。此时新进来一个任务,线程池会做什么操作? 空闲的核心线程会直接执行这个任务吗? 会先丢到队列里再说吗? 答案都是否定的。 我们看下下面的线程处理流程图 别人说的都不算,还得看源码,摘出了java 阅读全文
posted @ 2021-01-31 14:31 苏黎世湖畔 阅读(501) 评论(0) 推荐(0)
摘要: CyclicBarrier默认的构造方法是CyclicBarrier(int parties),parties表示栅栏需要拦截的线程数量。 每个线程调用await方法,计数器减1,减少为0前所有线程都必须等待。 CyclicBarrier还提供一个更高级的构造函数CyclicBarrier(int 阅读全文
posted @ 2021-01-31 14:03 苏黎世湖畔 阅读(95) 评论(0) 推荐(0)
摘要: Semaphore 美[ˈseməfɔːr] 信号量Semaphore 可以用于做流量控制,特别是公用资源有限的应用场景,比如数据库连接。Semaphore的构造方法 Semaphore(int permits)接受一个整型的数字,表示可用的许可证数量。Semaphore(10)表示允许10个线程获 阅读全文
posted @ 2021-01-31 13:49 苏黎世湖畔 阅读(230) 评论(0) 推荐(0)
摘要: 1 import java.util.concurrent.CountDownLatch; 2 3 /** 4 * @author sulishi 5 * @version 1.0 6 * @date 2021/1/31 7 */ 8 public class CountDownLatchTest 阅读全文
posted @ 2021-01-31 13:17 苏黎世湖畔 阅读(99) 评论(0) 推荐(0)