美文网首页
分布式Java中间件

分布式Java中间件

作者: zorkelvll | 来源:发表于2019-03-28 12:51 被阅读0次
image

关键词:java线程

ZERO

    持续更新 请关注:https://zorkelvll.cn/blogs/zorkelvll/articles/2018/11/18/1542543273257

背景

中间件是为软件应用提供操作系统所提供的服务之外的服务的,如远程过程调用和对象访问中间件、消息中间件、数据访问中间件

一、Java线程

线程操作的jvm内存是主内存和工作内存这两个概念的!!!

1、**线程池:**有效复用线程而不用每次都创建线程,ThreadPoolExecutor、ScheduledThreadPoolExecutor(定时)、Executors.newCachedThreadPool(没有线程上限)

2、**可见性:**指在一个线程中修改变量的值之后,在其他线程中能够看到这个值

2、**synchronized关键字:**声明方法(静态方法则同步锁属于类、成员方法则同步锁属于对象)、代码块(该关键字后的参数,用于同步的锁所属的对象,可以是任意对象) =>(线程间互斥作用、块中变量的可见性作用【**在主内存与工作内存中同步变量的值,因此是可见的**】)【**独占锁】**

3、**ReentrantLock类**:类似于修饰代码块时的syschronized,不过需要**显示地进行unlock**(一般写在finally中);另有tryLock方法,且构造函数可选择构造公平锁(严格按照顺序,所以效率相对低些)与非公平锁(可抢占,可能会导致饿死);ReentrantReadWriteLock读写锁,主要用于读多写少且读不需要互斥的场景

4、**volatile关键字:**只是保证所修饰的同一个变量在多线程中的可见性,常用于修饰作为开关状态的变量;同一个变量线程间的可见性与多个线程中操作互斥是两码事;**【显示锁和原子变量】**

对于一般的变量,如**get方法**的调用获取的都是当前线程工作内存中的**副本**,因此**读**不一定是最新的值;

被volatile修饰的变量,变量不会有线程的本地副本,只会放在主存中,因此**读**一定是最新的;

被sychronized修饰的变量,则是可以保证线程的本地副本与主存的同步,因此**读**也一定是最新的;

5、**Atomic*类:**提供一些原子操作,比较明显地提升性能,主要在于如AtomicInteger内部通过JNI的方式使用了硬件支持的CAS指令;

6、**wait、notify、notifyAll方法:**均是Object对象的方法,wait是进行等待的,notify和notify都是唤醒调用同一个对象wait方法的线程,区别在于前者唤醒一个等待线程而后者唤醒全部,,且这**三个方法的调用都必须在sychronized块中**

7、CountDownLatch类:当多个线程都到达了预期状态或完成预期工作时触发事件,其他线程可以等待这个事件来触发自己后续的工作;

8、CyclicBarrier类:循环屏障,可以协同多个线程并让多个线程在这个屏障前等待,直到所有线程都到达了这个屏障时,再一起继续执行后面的动作;

9、Semaphore类:用于管理信号量的,构造的时候传入可供管理的信号量的数值,总数也即控制并发的数量

10、Exchanger类:用于在两个线程之间进行数据交换

11、**Future接口和FutureTask类:**回调

二、并发容器:

并发容器是线程安全的一种,但是更加强调的是容器的并发性,也即不仅仅只追求线程安全,还要考虑并发性,提升并发环境下的性能;

**加锁互斥:**线程安全,但降低了并发性,其实就是串行了

**CopyOnWrite:**是在更改容器的时候,把容器写一份进行修改,保证正在读的线程不受影响,适合于读多写少的场景会非常好,实质上在**写的时候重建了一次容器**

**Concurrent:**实现思路是尽量**保证读不加锁,并且修改时不影响读**,所以会达到比使用读写锁更高的并发性能

三、动态代理:

代理模式

静态代理

动态代理:Proxy.newProxyInstance()     invoke()

四、反射

Java反射机制是指在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性

五、网络通信

三个模型:BIO、NIO、AIO

通信框架:MINA,Netty

【读书系列】

《大型网站系统与Java中间件实践》,曾宪杰,电子工业出版社

相关文章

  • 大型网站系统与Java中间件实践 02 Java中间件

    01 认识分布式02 Java中间件03 分布式框架 3 构建Java中间件 3.1 什么事中间件? 中间件不是最...

  • JAVA名词汇

    1、Java中间件,分布式系统、分布式缓存、消息队列 JAVA中间件:包括服务框架中间件:解决集群间的访问通信问题...

  • 腾讯内容首发:分布式核心原理解析笔记+分布式消息中间件实践笔记P

    分布式消息中间件实践笔记 首先,这份分布式消息中间件实践笔记是以Java语言编写。 消息中间件是分布式系统中的重要...

  • Java架构师必看的10本书

    1、大型网站系统与JAVA中间件实践 本书围绕大型网站和支撑大型网站架构的Java中间件的实践展开介绍。 从分布式...

  • 推荐给Java架构师的10本书

    1、大型网站系统与JAVA中间件实践 本书围绕大型网站和支撑大型网站架构的Java中间件的实践展开介绍。 从分布式...

  • 2019-01-06

    大型网站系统与Java中间件实践 第一章 分布式系统的基础知识 曾宪杰的《大型网站系统与Java中间件实践》第一章...

  • 初识 zookeeper

    简介 中间件,提供协调服务 作用于分布式系统,发挥其优势,可以为大数据服务 支持 java 语言,提供 java ...

  • 一、分布式系统简介

    本系列文章整理自《大型网站系统与Java中间件实践》 分布式系统的定义 A distributed system ...

  • kafka的应用实战

    消息中间件能做什么 消费中间件用来解决分布式系统之间消息传递,从而实现应用程序之间的协同如异步化处理。 Java中...

  • 深入理解阿里分布式消息中间件

    什么是分布式消息中间件 什么是分布式消息中间件? 对于分布式消息中间件,首先要了解两个基础的概念,即什么是分布式系...

网友评论

      本文标题:分布式Java中间件

      本文链接:https://www.haomeiwen.com/subject/ztqevqtx.html