《重学Java高并发》Disruptor使用实战
上文已经详细介绍了disruptor,也体会了并发编程的奥妙,接下来将理论结合实战,本文和大家分享一下disruptor的使用,加深对disruptor工具包对理解。1、 disruptor常用类一览disruptor的常用类体系如下图所示:其职责说明如下:RingBuffer 环形队列,disruptor中的核心存储类Sequencer 序号实现器,维护发送者发送的序号生成逻辑、消费方获取可消....

《重学Java高并发》disruptor是如何做到百万级吞吐?
Disruptor是业界非常出名的单机版高性能队列,官方宣传能达到百万级吞吐,那disruptor是如何做到的呢?其核心秘诀如下:破除伪共享对象池无锁化设计批处理上面这些观点,网上已经提了N遍,没关系,本文将结合代码、图解的方式,与大家一起探究实现原理,希望能给读者朋友们不一样的感悟。提到Disruptor,必然会提到RingBuffer,disruptor环形队列,是整个Disruptor是基....

《重学Java高并发》线程之间如何协作(父子线程如何优雅交互)
如果大家从事的是业务开发,在工作中如果涉及到并发,通常是引入线程池来实现并发。但如果从事的是基础框架的开发,通常并不会直接使用线程池,会按需创建单个线程,并且为了职责的单一与提升性能,通常单个线程只会负责一个流程中的部分功能,多个线程紧密配合。那线程与线程之间如何协作呢?如果子线程出现异常,如何通知主线程呢?可以明确的告诉大家,子线程抛出异常,主线程是无法捕获到异常的。请带着上述问题,开始本文的....

《重学Java高并发》同步转异步编程技巧与实战运用
1、线程池+Future模式笔者在公司中负责开发某一个产品时,需要实现一个告警模块,告警通知方式需要为钉钉群、电话短信等方式,并且及时时单一的告警方式,例如钉钉群告警,也需要同时发送到多个群(监控中心、业务项目组钉钉群),使监控告警能真正通知到各个相关方,确保人工及时处理跟进,避免事态进一步发展。发送钉钉群告警信息的时序图如下:发送到不同的钉钉群,这个过程完成可以并发,并发同步等待发送结果,即这....

《重学Java高并发》之“摸底考试”:你会使用多线程实现生产者-消费者协作模型吗? 原创
1、消费者/生产者场景一个非常经典的场景:面包厂生产面包。在一个面包厂,面包的仓库容积有限,生产工人可以继续生产面包的条件是仓库还有足够的空间,生产的面包是需要派送工人卖给顾客,派送工人要能派送面包的条件是仓库中有剩余的面包。大概的场景到交付如下图所示:2、代码实现有了场景,接下来我们使用java写一个简易的生产者、消费者。本示例中涉及到类主要如下图所示:其类的职责说明如下:Bakery 面包厂....

【Java高并发系列】之走进并发世界
忘掉那该死的并行在2014年底的 「Avoiding ping pong」论坛上,「Linus Torvalds」 提出了一个截然不同的观点,他说:「“忘掉那该死的并行吧!”」(原文: Give it up . The whole "parallel computing is the future" is a bunch of crock)看到这个消息,突然心里一紧,还没记住就要我忘记岂不「美滋....

【Java高并发系列】之入门篇
什么是线程在了解什么是「线程」之前,我们先了解一下什么是「进程」进程是线程的母亲,进程是系统进行资源分配和调度的基本单位,是操作系统结构的基础。进程是线程的容器,进程中可以容纳多个线程。简单来讲就是:一间房子相当于一个容器,也就是进程的概念。这间房子住着你和你的父母,三个人就是分别的线程。你上学,妈妈干家务,爸爸上班,做着不同的事情,维持的进程的运行。「线程」就是轻量级的进程,是程序执行的最小单....

「高并发秒杀」Java环境搭建
下载安装包下载JDK1.8的安装包,可以点以下链接,这个是oracle的要注册下载,或者自行去网页寻找点击跳转到下载地址双击安装JKD,一直下一步直到此界面:然后更改安装路径,点击更改(c),更改到好记得路径,把路径记下来或者复制到某个地方配置环境变量我的电脑——右键——属性——选择更改高级设置选择环境变量在系统变量中选择新建在变量名中输入JAVA_HOME(这里要大写,全英才能打出这个_下划线....

Java 多线程与高并发
1:volatile保证线程可见性当多个线程访问同一个共享资源时,线程会拷贝资源的副本到自己的工作内存。这样如果某个线程对这个资源进行写操作,其他线程不会马上知道。当对这个资源加volatile关键字,其他线程就会随时监听,更新新的值。如下例子,不加volatile关键字,线程不会停止,加volatile关键字后会及时重新更新副本stop的值,线程停止。package com.nobody.th....

Java下一代高并发技术——虚拟线程“JEP 425: Virtual Threads (Preview)”
很多语言都有类似于“虚拟线程”的技术,比如Go、C#、Erlang、Lua等,他们称之为“协程”。 不管是虚拟线程还是协程,他们都是轻量级线程,其目的都是为了提高并发能力。 本节详细介绍Java平台的“虚拟线程”的技术——“JEP 425: Virtual Threads (Preview)”。Java平台计划引入虚拟线程,可显著减少编写、维护和观察高吞吐量并发应用程序的工作量。“JEP 425....

本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。