test ssh

2023-03-23
阅读 2 分钟
753
import org.springframework.stereotype.Component;import org.springframework.web.reactive.socket.WebSocketHandler;import org.springframework.web.reactive.socket.WebSocketMessage;import org.springframework.web.reactive.socket.WebSocketSession;import reactor.core.Disposable;import reactor.core.publis...

java并发编程学习21--基于springboot的秒杀系统实现3--存储过程

2018-04-17
阅读 5 分钟
3.8k
所谓的存储过程是指:是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。可以用控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。

java并发编程学习20--基于springboot的秒杀系统实现2--redis缓存

2018-04-16
阅读 5 分钟
5.8k
丰富的数据类型,redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作

java并发编程学习19--基于springboot的秒杀系统实现1--项目介绍

2018-04-16
阅读 11 分钟
6.6k
在秒杀系统当中有两个核心的表:秒杀商品(kill_product)与秒杀明细(kill_item),具体的逻辑是一个用户秒杀商品的库存减一,秒杀明细的记录增加一条。这两步作是处于同一事务之中。

java并发编程学习18--最迷你的抢红包

2018-03-06
阅读 4 分钟
3.7k
【业务分析 要完成抢红包的功能重点有两个: 多线程并发修改数据 红包现金分配算法 【类设计 用户对象:包含用户名称,所抢到的金额,最后的提示文言字段 {代码...} 并发访问的共享红包对象:这个对象包含了预分配的所有小红包并提供并发控制,用户线程只能通过这个类获得红包 {代码...} 用户线程: {代码...} 红包金额...

java并发编程学习17--ThreadLocal

2018-01-20
阅读 3 分钟
1.7k
ThreadLocal类用来存放线程的局部变量,每个线程都有自己的局部变量彼此之间不共享。TheadLocal<T>主要有以下三个方法:

java并发编程学习16--CompletableFuture(三)

2018-01-16
阅读 4 分钟
6.3k
由于我们的两个远程服务:1.查询价格,2.查询折扣价格都是基于网络的。所以很容易出现某一个商店的数据迟迟无法返回的情况。由于这些原因,我希望查询器在查询时能够将拿到数据先返回过来,而不是等待所有的异步查询完成后集中返回一个List。我们首要需要避免的就是:等待创建一个包含所有价格的List。我们应该直接处理C...

java并发编程学习15--CompletableFuture(二)

2018-01-15
阅读 5 分钟
2.4k
【模拟情景 上一篇说到每一个shop都会提供一个价格查询的服务,但是现在我们进行假设: {代码...} 定义商店对象:Shop.java {代码...} 定义折扣对象:Discount.java {代码...} 用于封装解析getPriceFormat的字符串对象:Quote.java {代码...} 于是现在的任务就是: {代码...} 现在先看看同步的方式来执行这个操作: {代...

java并发编程学习14--CompletableFuture(一)

2018-01-14
阅读 7 分钟
9.8k
Future接口时java5引入的,设计初衷是对将来某个时刻会发生的结果建模。它建模了一种异步计算,返回了一个执行预算结果的引用。比如,你去干洗店洗衣服,店员会告诉你什么时候可以来取衣服,而不是让你一直在干洗店等待。要使用Future只需要将耗时操作封装在一个Callable对象中,再将其提交给ExecutorService就可以了。

java并发编程学习13--Atomic数据结构简介

2017-12-29
阅读 2 分钟
1.8k
JAVA 中无锁的线程安全整数 AtomicInteger,一个提供原子操作的Integer的类。在Java语言中,++i和i++操作并不是线程安全的,在使用的时候,不可避免的会用到synchronized关键字。而AtomicInteger则通过一种线程安全的加减操作接口。AtomicInteger为什么能够达到多而不乱,处理高并发应付自如呢?这是由硬件提供原子操作...

java并发编程学习12--并发数据结构简介

2017-12-29
阅读 2 分钟
3.1k
串行数据结构在并发环境下是不安全的,而直接使用锁又会带来性能的影响,所以jdk专门设计了针对并发环境下的数据结构,其中使用了无锁运算来保证性能。

java并发编程学习11--同步器--栅栏

2017-12-29
阅读 4 分钟
1.8k
java.util.concurrent包包含几个能帮助人们管理相互合作的线程集的类。这些机制具有为线程直间的共用集结点模式提供的‘预制功能’。如果有一个相互合作的线程满足这些行为模式之一,那么应该直接使用提供的类库而不是显示的使用锁与条件的集合。

java并发编程学习10--同步器--倒计时门栓

2017-12-29
阅读 6 分钟
2.1k
java.util.concurrent包包含几个能帮助人们管理相互合作的线程集的类。这些机制具有为线程直间的共用集结点模式提供的‘预制功能’。如果有一个相互合作的线程满足这些行为模式之一,那么应该直接使用提供的类库而不是显示的使用锁与条件的集合。

java并发编程学习9-同步器--信号量

2017-12-29
阅读 3 分钟
2.2k
java.util.concurrent包包含几个能帮助人们管理相互合作的线程集的类。这些机制具有为线程直间的共用集结点模式提供的‘预制功能’。如果有一个相互合作的线程满足这些行为模式之一,那么应该直接使用提供的类库而不是显示的使用锁与条件的集合。

java并发编程学习8--同步--ReentrantLock

2017-12-29
阅读 7 分钟
1.5k
在多线程的开发中,两个及其以上的线程需要共享统一数据的存取。如果两个线程存取相同的对象,并且每一个线程都调用一个修改该对象状态的方法,根据线程访问数据的顺序,可能会出现错误的数据结果,这种现象成为条件竞争。因为修改对象状态的方法并不是一个原子操作,通常步骤是:

java并发编程学习7--同步--synchronized关键字

2017-12-29
阅读 3 分钟
1.6k
在多线程的开发中,两个及其以上的线程需要共享统一数据的存取。如果两个线程存取相同的对象,并且每一个线程都调用一个修改该对象状态的方法,根据线程访问数据的顺序,可能会出现错误的数据结果,这种现象成为条件竞争。因为修改对象状态的方法并不是一个原子操作,通常步骤是:

java并发编程学习6--并行流

2017-12-29
阅读 4 分钟
2.5k
并行流就是一个把内容分成多个数据块,并用不同的线程分别处理每一个数据块的流。在java7之前,并行处理数据很麻烦,第一,需要明确的把包含数据的数据结构分成若干子部分。第二,给每一个子部分分配一个独立的线程。第三,适当的时候进行同步,避免出现数据竞争带来的问题,最后将每一个子部分的结果合并。在java7中引...

java并发编程学习5--forkJoin

2017-12-29
阅读 6 分钟
2.1k
分支和并框架的目的是以递归的方式将可以并行的任务拆分成更小的任务,然后将每个子任务的结果合并起来生成整体的结果,它是ExecutorService的一个实现,它把子任务分配给线程池(ForkJoinPool)中的工作线程。某些应用可能对每个处理器内核饭别试用一个线程,来完成计算密集任务,例如图像处理。java7引入forkjoin框架...

java并发编程学习4--线程通信练习

2017-12-29
阅读 9 分钟
1.9k
启动3个线程打印递增的数字, 线程1先打印1,2,3,4,5, 然后是线程2打印6,7,8,9,10, 然后是线程3打印11,12,13,14,15. 接着再由线程1打印16,17,18,19,20....以此类推, 直到打印到75. 程序的输出结果应该为:

java并发编程学习3--线程池

2017-12-29
阅读 4 分钟
1.9k
为了节省系统在多线程并发时不断创建和销毁线程带来的额外开销,就需要引入线程池。线程池的基本功能就是进行线程的复用。当系统接受一个提交的任务时,并不会着急去创建一个新的线程去执行这个任务,而是去线程池中查询是否有空闲的线程。

java并发编程学习2--Future

2017-12-27
阅读 6 分钟
2.7k
interface Future<V> ,表示异步计算的结果,Future有个get方法而获取结果只有在计算完成时获取,否则会一直阻塞直到任务转入完成状态,然后会返回结果或者抛出异常。相对于继承Thread来创建线程方式,使用Runnable可以让你的实现类同时实现多个接口,而相对于Callable及Future,Runnable方法并不返回任务执行结果...

java并发编程学习1--基础知识

2017-12-26
阅读 5 分钟
2.4k
JVM中存在一个主存区(Main Memory或Java Heap Memory),Java中所有变量都是存在主存中的,对于所有线程进行共享,而每个线程又存在自己的工作内存(Working Memory),工作内存中保存的是主存中某些变量的拷贝,线程对所有变量的操作并非发生在主存区,而是发生在工作内存中,而线程之间是不能直接相互访问,变量在程序中的传...