Wesley13 Wesley13
3年前
java并发之CopyOnWriteArraySet
java并发之CopyOnWriteArraySetCopyOnWriteArraySet是基于CopyOnWriteArrayList实现的,持有CopyOnWriteArrayList的内部对象,它的迭代器也是CopyOnWriteArrayList的迭代器,add操作通过addAllAbsent
Wesley13 Wesley13
3年前
Java并发系列4
今天讲另一个并发工具,叫读写锁。读写锁是一种分离锁,是锁应用中的一种优化手段。考虑读多写少的情况,这时如果我们用synchronized或ReentrantLock直接修饰读/写方法未尝不可,如:publicstaticclassRw{privateintval;publicsynchr
Stella981 Stella981
3年前
Redis高并发7
1、主从架构的核心原理当启动一个slavenode的时候,它会发送一个PSYNC命令给masternode如果这是slavenode重新连接masternode,那么masternode仅仅会复制给slave部分缺少的数据;否则如果是slavenode第一次连接masternode,那么会触发一次fullre
Wesley13 Wesley13
3年前
NIO高并发基础
NIO高并发是jdk1.4出现的新的流.NIONewIO同步式非阻塞式IOBIOBlockingIO同步式阻塞式IOUDP/TCPAIOAsynchronousIO异步式非阻塞IOjdk1.8BIO的缺点1.会产生阻塞行为receive/accept/connect/r
Wesley13 Wesley13
3年前
Java并发系列2
上一节讲到Java线程和synchronized关键字的使用。下面就开始介绍JDK中的一些好用的并发控制工具。先来看ReetrantLock类,他可用来替换synchronized关键字,而且比synchronized关键字更为强大和灵活。一、ReetrantLock简单示例先看代码:publi
Wesley13 Wesley13
3年前
Java并发系列6
话说北京有个地儿叫大栅栏,在前门前,天桥下,过了天桥就到了天坛。这个大栅栏标准读音是dazhalan,但如果你非得这么念可能要遭到本地人笑话的,正确的土话读法是:dashelaner。言归正传,今天讲到的工具叫CyclicBarrier,直译过来就叫做栅栏。栅栏其实就是口袋,玉米装满口袋就需要扎口。下面通过一个扎口袋的例子初步认
Wesley13 Wesley13
3年前
Java并发系列 1
程序开发中并发的场景还是比较常见的,特别是当下分布式环环境开发大行其道的情况下,从前端处理,到服务调用、缓存处理、数据库处理、文件处理、消息处理等等,无不需要并发的知识。从今天开始,我要写一个关于Java并发的系列文章,希望各位可以从中受益。我们先从基础的线程开始说起!一、线程基础知识从宏观来看,简单说一下进程:所谓进程
Wesley13 Wesley13
3年前
Java并发系列[6]
Semaphore(信号量)是JUC包中比较常用到的一个类,它是AQS共享模式的一个应用,可以允许多个线程同时对共享资源进行操作,并且可以有效的控制并发数,利用它可以很好的实现流量控制。Semaphore提供了一个许可证的概念,可以把这个许可证看作公共汽车车票,只有成功获取车票的人才能够上车,并且车票是有一定数量的,不可能毫无限制的发下去,这样就会导致公交车
Wesley13 Wesley13
3年前
Java并发系列3
考虑这样的场景:我司出了一款新游戏,因模式新颖、宣传到位,导致游戏开服火爆,每次新开一个服务器就会一下涌入大量玩家。假如一个线路服务器的承载力上限是5000,那么我们该通过什么机制进行资源调配呢?比较容易想到的方法就是给每个玩家发许可证,同时一个服务器的许可证上限为5000,这样的话,许可证超出上限则玩家需要排队。今天我们讲的并发工具就如同代码层
Wesley13 Wesley13
3年前
Java并发编程指南
  多线程是实现并发机制的一种有效手段。在Java中实现多线程有两种手段,一种是继承Thread类,另一种就是实现Runnable/Callable接口。  java.util.concurrent包是专为Java并发编程而设计的包。类图如下:!(https://oscimg.oschina.net/oscnet/29ddbb