Java多线程
Bertha wang
这个作者很懒,什么都没留下…
展开
-
Java中的锁深入理解
Java中的锁 常见的锁有synchronized、volatile、偏向锁、轻量级锁、重量级锁 1、synchronized synchronized是并发编程中接触的最基本的同步工具,是一种重量级锁,也是java内置的同步机制,首先我们知道synchronized提供了互斥性的语义和可见性,那么我们可以通过使用它来保证并发的安全。 synchronized三种用法: 对象锁 当使用synchr...原创 2019-11-07 16:49:26 · 188 阅读 · 0 评论 -
Spring中ioc的实现原理
学习过Spring框架的人一定都会听过Spring的IoC(控制反转) 、DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC 、DI这两个概念是模糊不清的,是很难理解的,今天和大家分享网上的一些技术大牛们对Spring框架的IOC的理解以及谈谈我对Spring Ioc的理解。 一.对Ioc的分析 1.1、IoC是什么 Ioc—Inversion of Control,...原创 2019-10-29 10:27:34 · 175 阅读 · 0 评论 -
微服务架构
今日总结了一下关于微服务架构的知识 目录如下 一、微服务架构介绍 二、出现和发展 三、传统开发模式和微服务的区别 四、微服务的具体特征 五、SOA和微服务的区别 六、如何具体实践微服务 七、常见的微服务设计模式和应用 八、微服务的优点和缺点 九、思考:意识的转变 一、微服务架构介绍 微服务架构(Microservice Architecture)是一种架构概念,旨在通过将功能分解到各个离散的服务中...原创 2019-10-24 16:34:51 · 266 阅读 · 1 评论 -
Redis系列二:redis集群高可用
Redis集群的概念: RedisCluster是redis的分布式解决方案,在3.0版本后推出的方案,有效地解决了Redis分布式的需求,当一个服务挂了可以快速的切换到另外一个服务,当遇到单机内存、并发等瓶颈时,可使用此方案来解决这些问题 一、分布式数据库概念 分布式数据库把整个数据按分区规则映射到多个节点,即把数据划分到多个节点上,每个节点负责整体数据的一个子集。比如我们库有900条用...原创 2019-10-22 16:23:43 · 213 阅读 · 0 评论 -
Redis分布式锁解决方案
我们知道分布式锁的特性是排他、避免死锁、高可用。分布式锁的实现可以通过数据库的乐观锁(通过版本号)或者悲观锁(通过for update)、Redis的setnx()命令、Zookeeper(在某个持久节点添加临时有序节点,判断当前节点是否是序列中最小的节点,如果不是则监听比当前节点还要小的节点。如果是,获取锁成功。当被监听的节点释放了锁(也就是被删除),会通知当前节点。然后当前节点再尝试获取锁,如...原创 2019-10-21 16:53:01 · 198 阅读 · 0 评论 -
JVM 工作原理和流程
Java 详解 JVM 工作原理和流程 <div class="article-info-box"> <div class="article-bar-top d-flex"> <span class="time">2015年08月04日 19:08:28</sp...转载 2019-10-18 10:59:03 · 165 阅读 · 0 评论 -
线程池ThreadPoolExecutor实现原理
为什么要使用线程池 在实际使用中,线程是很占用系统资源的,如果对线程管理不善很容易导致系统问题。因此,在大多数并发框架中都会使用线程池来管理线程,使用线程池管理线程主要有如下好处: 降低资源消耗。通过复用已存在的线程和降低线程关闭的次数来尽可能降低系统性能损耗; 提升系统响应速度。通过复用线程,省去创建线程的过程,因此整体上提升了系统的响应速度; 提高线程的可管理性。线程是稀缺资源,如果无限制...原创 2019-10-17 14:47:12 · 177 阅读 · 0 评论 -
.NET面试题解析(07)-多线程编程与线程同步
关于线程的知识点其实是很多的,比如多线程编程、线程上下文、异步编程、线程同步构造、GUI的跨线程访问等等,本文只是从常见面试题的角度(也是开发过程中常用)去深入浅出线程相关的知识。如果想要系统的学习多线程,没有捷径的,也不要偷懒,还是去看专业书籍的比较好。 常见面试题目: 描述线程与进程的区别? 为什么GUI不支持跨线程访问控件?一般如何解决这个问题? 简述后台线程和前台线程的区别? 说说常用的...原创 2019-10-17 13:58:44 · 287 阅读 · 0 评论 -
Java多线程-工具篇-BlockingQueue
前言: 在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题。通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利。本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景。 认识BlockingQueue 阻塞队列,顾名思义,首先它是一个队列,而一个队列在数据结构中所起...原创 2019-10-16 10:09:52 · 148 阅读 · 0 评论 -
Java并发之CountDownLatch、Semaphore和CyclicBarrier
JAVA并发包中有三个类用于同步一批线程的行为,分别是CountDownLatch、Semaphore和CyclicBarrier。 CountDownLatch CountDownLatch是一个计数器闭锁,通过它可以完成类似于阻塞当前线程的功能,即:一个线程或多个线程一直等待,直到其他线程执行的操作完成。CountDownLatch用一个给定的计数器来初始化,该计数器的操作是原子操作,即同时...原创 2019-10-14 16:52:32 · 158 阅读 · 0 评论 -
深入理解Java中的锁
Java中的锁 常见的锁有synchronized、volatile、偏向锁、轻量级锁、重量级锁 1、synchronized synchronized是并发编程中接触的最基本的同步工具,是一种重量级锁,也是java内置的同步机制,首先我们知道synchronized提供了互斥性的语义和可见性,那么我们可以通过使用它来保证并发的安全。 synchronized三种用法: 对象锁 当使用synchr...原创 2019-10-11 15:51:11 · 165 阅读 · 0 评论 -
高并发架构面试题之缓存(四)
面试题 redis 的持久化有哪几种方式?不同的持久化机制都有什么优缺点?持久化机制具体底层是如何实现的? 面试官心理分析 redis 如果仅仅只是将数据缓存在内存里面,如果 redis 宕机了再重启,内存里的数据就全部都弄丢了啊。你必须得用 redis 的持久化机制,将数据写入内存的同时,异步的慢慢的将数据写入磁盘文件里,进行持久化。 如果 redis 宕机重启,自动从磁盘上加载之前持久化的一些...原创 2019-09-29 13:57:22 · 125 阅读 · 0 评论 -
Java 最常见19个模块面试题—第十二块答案
Java 最常见19个模块面试题—第十二块答案 十二、Hibernate 1. 为什么要使用 hibernate? 对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。 Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他很大程度的简化DAO层的编码工作 hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。 hibernate...原创 2019-09-18 11:07:45 · 187 阅读 · 0 评论 -
Java 最常见19个模块面试题—第十三块答案
Java 最常见19个模块面试题—第十三块答案 十三、Mybatis 1. mybatis 中 #{}和 ${}的区别是什么? #{}是预编译处理,KaTeX parse error: Expected 'EOF', got '#' at position 21: …串替换; Mybatis在处理#̲{}时,会将sql中的#{}替…{}时,就是把${}替换成变量的值; 使用#{}可以有效的防止SQ...原创 2019-09-18 11:29:57 · 238 阅读 · 1 评论 -
Java 最常见19个模块面试题—第十四块答案
第十四块答案 十四、RabbitMQ 1. rabbitmq 的使用场景有哪些? ①. 跨系统的异步通信,所有需要异步交互的地方都可以使用消息队列。就像我们除了打电话(同步)以外,还需要发短信,发电子邮件(异步)的通讯方式。 ②. 多个应用之间的耦合,由于消息是平台无关和语言无关的,而且语义上也不再是函数调用,因此更适合作为多个应用之间的松耦合的接口。基于消息队列的耦合,不需要发送方和接收方同时在...原创 2019-09-18 13:22:20 · 231 阅读 · 0 评论 -
Java 最常见19个模块面试题—第十五块答案
第十五块答案 十五、Kafka 1. kafka 可以脱离 zookeeper 单独使用吗?为什么? kafka 不能脱离 zookeeper 单独使用,因为 kafka 使用 zookeeper 管理和协调 kafka 的节点服务器。 2. kafka 有几种数据保留的策略? kafka 有两种数据保存策略:按照过期时间保留和按照存储的消息大小保留。 3. kafka 同时设置了 7 天和 10...原创 2019-09-18 14:50:09 · 160 阅读 · 0 评论 -
Java 最常见19个模块面试题—第十八块答案
第十八,第十九块答案 十八、Redis 1. redis 是什么? 都有哪些使用场景?Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 Redis 使用场景: 数据高并发的读写 海量数据的读写 对扩展性要求高的数据 2. redis 有哪些功能? 数据缓存功能 分布式锁的功能 支持数据持久化 支持事务 支持消...原创 2019-09-19 14:46:46 · 186 阅读 · 0 评论 -
Java 最常见19个模块面试题—第十九块答案
第十九块答案 十九、JVM 1. 说一下 jvm 的主要组成部分?及其作用? 类加载器(ClassLoader) 运行时数据区(Runtime Data Area) 执行引擎(Execution Engine) 本地库接口(Native Interface) 组件的作用: 首先通过类加载器(ClassLoader)会把 Java 代码转换成字节码,运行时数据区(Runtime Data Area)...原创 2019-09-20 11:15:58 · 238 阅读 · 0 评论 -
高并发面试题系类—如何处理消息丢失的问题
面试题 如何保证消息的可靠性传输?或者说,如何处理消息丢失的问题? 面试官心理分析 这个是肯定的,用 MQ 有个基本原则,就是数据不能多一条,也不能少一条,不能多,就是前面说的重复消费和幂等性问题。不能少,就是说这数据别搞丢了。那这个问题必须得考虑一下。 如果说这个是用 MQ 来传递非常核心的消息,比如说计费、扣费的一些消息,那必须确保这个 MQ 传递过程中绝对不会把计费消息给弄丢。 面试题剖...原创 2019-09-24 11:49:41 · 322 阅读 · 0 评论 -
高并发架构之消息列队面试题集二
面试题1. 如何保证消息的顺序性? 面试官心理分析 其实这个也是用 MQ 的时候必问的话题,第一看看你了不了解顺序这个事儿?第二看看你有没有办法保证消息是有顺序的?这是生产系统中常见的问题。 面试题剖析 我举个例子,我们以前做过一个 mysql binlog 同步的系统,压力还是非常大的,日同步数据要达到上亿,就是说数据从一个 mysql 库原封不动地同步到另一个 mysql 库里面去(mysql...原创 2019-09-25 16:49:28 · 238 阅读 · 0 评论 -
高并发架构面试题之缓存(二)
面试题2. redis 和 memcached 有什么区别?redis 的线程模型是什么?为什么 redis 单线程却能支撑高并发? 面试官心理分析 这个是问 redis 的时候,最基本的问题吧,redis 最基本的一个内部原理和特点,就是 redis 实际上是个单线程工作模型,你要是这个都不知道,那后面玩儿 redis 的时候,出了问题岂不是什么都不知道? 还有可能面试官会问问你 redis 和...原创 2019-09-27 13:51:58 · 193 阅读 · 0 评论 -
Java 最常见19个模块面试题—第九和第十模块答案
Java 最常见19个模块面试题—第九和第十模块答案 九、设计模式 说一下你熟悉的设计模式? 参考:常用的设计模式汇总,超详细! 简单工厂和抽象工厂有什么区别? 简单工厂模式: 这个模式本身很简单而且使用在业务较简单的情况下。一般用于小项目或者具体产品很少扩展的情况(这样工厂类才不用经常更改)。 它由三种角色组成: 工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻辑,根据逻辑不...原创 2019-09-17 11:35:53 · 500 阅读 · 0 评论