Java高性能网络编程--Reactor模型 Java

Java高性能网络编程--Reactor模型

Reactor模型是基于事件驱动的模型,是高性能网络编程中非常重要概念,常用于解决多核服务器下的如何处理海量I/O问题。Java中大名鼎鼎的Netty网络编程框架的线程模型正是基于Reactor模型。 本文主要基于Doug Lea的文章 Scalable IO in Java 来介绍下Reactor模型。 本文所有内容均基于前人资料总结而成,如有侵权必删。 传统网络编程 初学...
阅读全文
啃碎并发(一):Java线程总述与概念 Java

啃碎并发(一):Java线程总述与概念

1 前言 在JDK5之前,Java多线程以及其性能一直是个软肋, 只有synchronized、Thread.sleep()、Object.wait/notify这样有限的方法 ,而synchronized的效率还特别地低,开销比较大。 在JDK5之后,相对于前面版本有了重大改进,不仅在Java语法上有了很多改进,包括:泛型、装箱、for循环、变参等,在多线程上也有了彻底提高,其引进...
阅读全文
springcloud项目优雅重启(六):解决方案 Spring

springcloud项目优雅重启(六):解决方案

问题 回到第一章节讲到的几个问题 : 业务项目实例shutdown时,会停止当前未完成的REQUEST请求。 某个业务项目实例已经停止了,但是网关仍会转发请求过去,导致请求失败。 某个业务项目实例已经重新启动了,但是网关并不会马上向这个实例转发请求;假如项目只有两个实例,如果在第一个节点刚启动完就立刻重启另外一个实例,就会导致服务不可用。 第一个问题是因为:...
阅读全文
Servlet3 异步原理与实践 编程技术

Servlet3 异步原理与实践

* hello 各位小伙伴,不知道大家端午节在忙啥呢?有没有出行计划呢?松哥最近在研究 Spring Security 源码,不由得感叹 Spring Security 真的上手容易,要理解真的不易。松哥后面专门写篇文章和大家聊这个问题。这两天在看 Spring Security 源码的时候,涉及到一点异步 Servlet 的问题,本来想着自己写篇文章和大家扫盲,后来在网上看到有一篇文章写的...
阅读全文
RxJava之Scheduer(调度器) Java

RxJava之Scheduer(调度器)

RxJava是一种为异步编程而实现的库,异步是其重要特色,合理地利用异步编程能够提高系统的处理速度。但是异步也会带来线程的安全问题,而且异步并不等于并发,与异步概念相对应的是同步。 在默认情况下,RxJava只在当前线程中运行,它是单线程的。此时Observable用于发射数据流,Observer用于接收和响应数据流,各种操作符(Operators)用于加工数据流,它们都在同一个线程中运行,实...
阅读全文
Quartz3.0定时任务学习之异步调度器 Java

Quartz3.0定时任务学习之异步调度器

前言 Quartz3与Quartz2的主要区别有两点: 1,Quartz3将它的资源类库拆的更细了,比如,想使用Quartz3开发,最少要引用Quartz,Quartz.Jobs,Quartz.Plugins这三个类库。 2,Quartz3整体上使用的是异步创建实例,所以我们使用时就必须要async,await的语法。 下面我们用Quartz3来做一个任务调度。 创建调度器管理...
阅读全文
自定义parallelStream的thread pool 编程技术

自定义parallelStream的thread pool

之前我们讲到parallelStream的底层使用到了ForkJoinPool来提交任务的,默认情况下ForkJoinPool为每一个处理器创建一个线程,parallelStream如果没有特别指明的情况下,都会使用这个共享线程池来提交任务。 那么在特定的情况下,我们想使用自定义的ForkJoinPool该怎么处理呢? 通常操作 假如我们想做一个从1到1000的加法,我们可以用并行strea...
阅读全文
互联网 Java 工程师面试题(Java 面试题二) Java

互联网 Java 工程师面试题(Java 面试题二)

48、运行时异常与受检异常有何异同? 答: 异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常 操作中可能遇到的异常,是一种常见运行错误,只要程序设计得没有问题通常就 不会发生。受检异常跟程序运行的上下文环境有关,即使程序设计无误,仍然可 能因使用的问题而引发。Java 编译器要求方法必须声明抛出可能发生的受检异常, 但是并不要求必须声明抛出未被捕获的运行时异常。异常和继承一...
阅读全文
Loading...