并发
临窗,听雨声
Java是世界上最好的语言,不是js,不是php,不是python,谢谢!
展开
-
以BIO的思维模拟NIO
以BIO的思维模拟NIO此处使用NIO的ServerSocketChanle使用一个LIst来装所有的请求(clinet)所有的请求来了,先设置非阻塞,然后放入list中遍历list,拿出里面所有的 client,进行读取数据,如果没有读到就不做处理,如果报错了则证明client端已经关闭代码如下:这就是个非阻塞的IOpackage bio;import lombok.exte...原创 2020-03-24 14:57:40 · 321 阅读 · 1 评论 -
ReentrantLock,Condition,ReentrantReadWriteLock.ReadLock,ReentrantReadWriteLock.WriterLock简介
ReentrantLock重入锁 重入锁,在需要同步的代码部分进行锁定,使用完毕之后一定要释放锁。实例方式:ReentrantLock lock = new ReentrantLock(true) ;后面有个 Boolean 类型的 fair 参数,是标识该锁是否公平的,默认 不公平,公平的意思就是 锁的给与基于调用顺序,先调用的,先获取,不公平则是遵循cpu调用规则,默认...原创 2019-05-23 23:57:03 · 449 阅读 · 0 评论 -
Thread之实现线程并获取返回值,使用实现 Callable类方法
我们使用继承Thread类,实现Runable类实现线程的时候,都面临一个问题,那就是在run方法里面无法抛异常,无法获取线程执行完后的返回值,我们需要返回值的时候怎么办呢?这个时候就需要 实现Callable接口了我们来做一个龟兔赛跑的小实验第一个,写出一个赛跑类,里面包含 赛跑者的名字,速度,是否可以跑,跑的总步数几个字段,/** * 创建赛跑类 * @author snow...原创 2018-08-23 23:04:37 · 2017 阅读 · 0 评论 -
CyclicBarrier 类简介
CyclicBarrier 类,就像一个哨子,等所有人都准备好了之后,一声令下,全部开始跑。区别于 CountDownLatch ,CountDownLatch 是阻塞主线程,等其他的线程执行完了之后才让主线程继续执行。CyclicBarrier是阻塞子线程,等所有的子线程准备好了之后,才让所有的子线程全部开始执行具体用法: 1.实例化 final CyclicBarr...原创 2019-05-22 15:42:33 · 229 阅读 · 0 评论 -
ExecutorService 线程池简介
1. Executors 创建线程池的方法 newFixedThreadPool() 方法,该方法返回一个固定数量的线程池,该方法的线程数始终不变,当有一个任务提交时,若线程池中空闲,则立即执行,若没有,则会被暂缓在一个任务队列中等待有空闲的线程去执行。适用场景:可用于Web服务瞬时削峰,但需注意长时间持续高峰情况造成的队列阻塞。 newSingleThreadExec...原创 2019-05-22 12:21:33 · 323 阅读 · 0 评论 -
java.util.concurrent 包下容器简介
1.ConcurrentMap 接口ConcurrentHashMap:替代 HashTable,并发性能大大提升的mapConcurrentSkipListMap:替代TreeMap 可以并发排序的MapConcurrentHashMap内部使用段(Segment)来表示这些不同的部分,每个段其实就是一- 个小的HashTable,它们有自己的锁。只要多个修改操作发生在不同的...原创 2019-05-21 17:45:26 · 459 阅读 · 0 评论 -
ThreadLocal简单用法-记录
ThreadLocal提供的方法:publicT get() { } publicvoidset(T value) { } publicvoidremove() { } protectedT initialValue() { }get() 获取ThreadLocal在当前线程中保存的变量的副本set() 设置ThreadLocal在当前线程中保存的变量的副本的值re...原创 2019-05-15 23:41:58 · 926 阅读 · 0 评论 -
CountDownLatch 简单用法-记录
参考+引用:https://www.cnblogs.com/liun1994/p/7396026.htmlCountDownLatch 是java1.5 之后在java.util.concurrent包下引入的并发类CountDownLatch能等待其他线程执行完毕后再执行自己线程,CountDownLatch是JDK 5+里面闭锁的一个实现。闭锁(latch):是一种同步方法,就像一...原创 2019-05-15 22:48:46 · 2423 阅读 · 3 评论 -
Master-Worker设计模式
Master-Worker设计模式,并行计算,很实用得一个设计模式。该设计模式的好处就是 并行计算,开一定的线程数去执行需要的操作,还是空间换时间,加快处理速度思路:在 Master 里面使用三个字段,分别去装 所有的任务,所有的 子节点(Worker),装每个Worker返回数据的map,在Worker里面使用 Master 的 queue,resultMap 的引用,当 ...原创 2019-05-19 18:38:10 · 394 阅读 · 0 评论 -
future 设计模式
future 设计模式是一种很常见的设计模式,jdk就自带实现,Future,就是 一个线程执行之后可以获取到返回值的那个。类实现 CallAble 之后 进行线程池 submit之后返回 future对象,可以进行 get返回值。 此处自己实现一个 future设计模式的数据获取,future设计模式的好处就是 以空间换时间,获取数据的事情新开一个线程去执行,...原创 2019-05-19 00:35:55 · 311 阅读 · 0 评论