
JAVA多线程与并发
文章平均质量分 96
技术武器库
人一生一定会痛苦2次,一是后悔时的痛苦,二是自律时的痛苦。
展开
-
Structured Streaming系列-6、事件时间窗口分析
Structured Streaming系列-6、事件时间窗口分析原创 2022-10-20 17:02:52 · 1434 阅读 · 0 评论 -
java定时任务实现的4种方式
1. java自带的Timer Timer timer = new Timer(); timer.schedule(new TimerTask() { @Override public void run() { System.out.println("Time's up!"); ...原创 2018-12-12 13:27:39 · 32182 阅读 · 15 评论 -
Rxjava2入门教程四:Scheduler线程调度器
Scheduler(线程调度器)赋予RxJava简洁明了的异步操作,可以说是RxJava中最值得称道的地方。在之前的代码中,Observable发射数据流,Observer接收响应数据流,以及Operators加工数据流均是在同一个线程中,实现出来的是一个同步的函数响应式。但是函数响应式的实际应用却不是这样的,大部分都是后台处理,前台响应的一个过程。Observable生成发射数据流,以及Ope...转载 2020-03-12 16:29:56 · 786 阅读 · 0 评论 -
Rxjava2入门教程三:Operators操作符
Operators操作符操作符(Operators):其实质是函数式编程中的高阶函数,是对响应式编程的各个过程拆分封装后的产物。以便于我们操作数据流。按照其作用具体可分为以下几类:创建:创建一个可观察对象Observable并发射数据过滤:从Observable发射的数据中取出特定的值变换:对Observable发射的数据执行变换操作组合:组合多个Observable,例如:{1,2...转载 2020-03-12 16:28:00 · 221 阅读 · 0 评论 -
Rxjava2入门教程二:Observable与Observer响应式编程在Rxjava2中的典型实现
在RxJava中,函数响应式编程具体表现为一个观察者(Observer)订阅一个可观察对象(Observable),通过创建可观察对象发射数据流,经过一系列操作符(Operators)加工处理和线程调度器(Scheduler)在不同线程间的转发,最后由观察者接受并做出响应的一个过程ObservableSource与Observer是RxJava2中最典型的一组观察者与可观察对象的组合,其他四组可...转载 2020-03-12 16:25:15 · 423 阅读 · 0 评论 -
Rxjava2入门教程一
RxJava是函数响应式编程思想在java语言上的具体实现。RxJava2在这一实现下,对Rxjava1进行了全面重写,如果之前没接触过RxJava,可以直接从Rxjava2入门,而不需要了解RxJava1。在使用RxJava2之前,对于Android开发,需要在项目中添加以下依赖 implementation "io.reactivex.rxjava2:rxjava:2.1.3"...转载 2020-03-12 16:23:25 · 210 阅读 · 0 评论 -
一文秒懂 Java CompletableFuture ( 下 )
上一章节中我们讲解了 CompletableFuture 的一些基本用法,比如如何使用和如何处理异步计算结果。本章节我们继续,主要讲解如何使用 CompletableFuture 来组合异步计算的结果组合 FuturesCompletableFuture API 最吸引人的部分,应该是能够在一系列链式计算步骤中组合 CompletableFuture 实例。这种链式的结果本身就是Compl...转载 2019-12-26 18:07:02 · 198 阅读 · 0 评论 -
一文秒懂 Java CompletableFuture ( 上 )
本文我们来了解下 Java 8 引入的 CompletableFuture 类,了解下该类提供的功能和用例。Java 中的异步计算异步计算很难推理的,因为我们的大脑是同步的,会将任何计算看成是一系列的同步计算。我们在实现异步计算时,往往会把回调的动作分散在代码中或者深深地嵌套在彼此内部,这种情况下,当我们需要处理其中一个步骤中可能发生的错误时,情况变得更糟。人生的一大悲剧是,尽管 ...转载 2019-12-26 18:03:16 · 275 阅读 · 0 评论 -
redis相关以及redis做分布式锁可能出现的问题
前言:有一篇文章对redis的介绍不错,拿来加深印象。在Redis中,允许用户设置最大使用内存大小server.maxmemory,当Redis 内存数据集大小上升到一定大小的时候,就会施行数据淘汰策略。1.volatile-lru:从已设置过期的数据集中挑选最近最少使用的淘汰2.volatile-ttr:从已设置过期的数据集中挑选将要过期的数据淘汰3.volatile-random:...转载 2019-12-25 09:38:33 · 1967 阅读 · 0 评论 -
分布式任务调度中心
xxl的网址https://www.xuxueli.com/page/projects.html总结的非常好,可以借鉴一下https://www.cnblogs.com/ysocean/p/10541151.html原创 2019-12-17 18:09:06 · 622 阅读 · 0 评论 -
关于Runtime.getRuntime().exec(),产生阻塞的2个陷阱
背景相信做java服务端开发的童鞋,经常会遇到Java应用调用外部命令启动一些新进程来执行一些操作的场景,这时候就会使用到Runtime.getRuntime().exec(),然而这个方法如果不谨慎很容易掉进陷阱。我们的一个PDF转码服务就踩到了这个坑掉进陷阱,这个转码服务主要是对pdf进行加密和转码成swf。这个服务上线后大部分时间都是稳定运行的,但是隔一段时间就会死掉,然后人肉手动重...转载 2019-12-17 18:05:59 · 1371 阅读 · 0 评论 -
【Java并发】ReadWriteLock读写锁的使用
说到Java并发编程,很多开发第一个想到同时也是经常常用的肯定是Synchronized,但是小编这里提出一个问题,Synchronized存在明显的一个性能问题就是读与读之间互斥,简言之就是,我们编程想要实现的最好效果是,可以做到读和读互不影响,读和写互斥,写和写互斥,提高读写的效率,如何实现呢?Java并发包中ReadWriteLock是一个接口,主要有两个方法,如下:pu...转载 2019-12-16 14:20:04 · 176 阅读 · 0 评论 -
Java中的双重检查锁(double checked locking)
在实现单例模式时,如果未考虑多线程的情况,就容易写出下面的错误代码:public class Singleton { private static Singleton uniqueSingleton; private Singleton() { } public Singleton getInstance() { if (null == u...转载 2019-12-03 17:52:25 · 145 阅读 · 0 评论 -
Java-分布式锁三种实现方式介绍
一、为什么要使用分布式锁我们在开发应用的时候,如果需要对某一个共享变量进行多线程同步访问的时候,可以使用我们学到的Java多线程的18般武艺进行处理,并且可以完美12的运行,毫无Bug!注意这是单机应用,也就是所有的请求都会分配到当前服务器的JVM内部,然后映射为操作系统的线程进行处理!而这个共享变量只是在这个JVM内部的一块内存空间!后来业务发展,需要做集群,一个应用需要部署到几...转载 2019-12-02 11:27:56 · 904 阅读 · 0 评论 -
使用Redisson实现分布式锁(高清)
1、maven坐标 <dependency> <groupId>org.redisson</groupId> <artifactId>redisson</artifactId> <version>3.5.7</version>...原创 2019-12-02 11:24:29 · 744 阅读 · 0 评论 -
schedule VS. scheduleAtFixedRate
这两个方法都是任务调度方法,他们之间区别是,schedule会保证任务的间隔是按照定义的period参数严格执行的,如果某一次调度时间比较长,那么后面的时间会顺延,保证调度间隔都是period,而scheduleAtFixedRate是严格按照调度时间来的,如果某次调度时间太长了,那么会通过缩短间隔的方式保证下一次调度在预定时间执行。举个栗子:你每个3秒调度一次,那么正常就是0,3,6,9s这样...原创 2018-12-11 11:02:35 · 340 阅读 · 0 评论 -
java使用wait和notify实现放水果吃水果(2个线程通信)
使用wait和notify方法仅能实现2个线程之间通信。后面会更新多个线程之间通信。Farmer:农夫Child:小孩Kuang:框(最多放进10个水果)如果框中的水果等于10就让农夫休息,如果框中的水果等于0就让小孩休息。Farmer:/** * @author :Lee * @date :2019/7/16 16:55 * @description:农夫 */...原创 2019-07-16 17:38:47 · 558 阅读 · 1 评论 -
CountDownLatch - 关于门闩的一个面试题
原文链接:https://blog.youkuaiyun.com/qq_38238041/article/details/83789917,我自己又改了下,在于线程2的if判断没有必要。 面试题:实现一个容器,提供两个方法,一个size,一个add 写两个线程,线程1往自定义容器中添加十个元素,线程2实时监控容器中的数量, 在容器中元素个数为5的时候输出并结束线程。 ...原创 2019-07-16 16:51:12 · 313 阅读 · 0 评论