标签:线程 第4页

Java

Java并发 — Java内存模型

1

小丁 发布于 2019-04-16

Java内存模型解决了并发程序中的 可见性问题 和 有序性问题 Java内存模型 按需禁用 CPU缓存会导致可见性问题,编译优化会导致有序性问题 解决可见性和有序性 最直接 的办法: 禁用CPU缓存和编译优化 问题虽然解决了,但程序性能会大大下降 合理的方案: 按需禁用CPU缓存...

阅读(19)评论(0)赞 (0)

Java

关于Java内存模型的三个特性

3

邓龙华 发布于 2019-04-16

Java在面对跨平台问题时,重要的一项就是解决硬件和操作系统内存之间的访问。 简要工作逻辑如下图: cpu的处理速度远快于内存的读写速度,因此Java采用 高速缓存 建立其桥梁。 其中protocal协议是为了保证多个进程访问cpu主内存时,多个缓存与主内存数据一致性。 当线程需...

阅读(20)评论(0)赞 (0)

Java

死磕 java集合之TreeSet源码分析

2

wenming.gapo 发布于 2019-04-16

TreeSet底层是采用TreeMap实现的一种Set,所以它是有序的,同样也是非线程安全的。 源码分析 经过前面我们学习HashSet和LinkedHashSet,基本上已经掌握了Set实现的套路了。 所以,也不废话了,直接上源码: package java.util; // ...

阅读(18)评论(0)赞 (0)

Java

java 多线程基础

songhua.gao 发布于 2019-04-16

进程和线程 每个正在系统上运行的程序都是一个进程。每个进程包含一到多个线程。线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行。也可以把它理解为代码运行的上下文。所以线程基本上是轻量级的进程,它负责在单个程序里执行多任务。通常由操作系统负责多个线程的调度和执行。 使...

阅读(17)评论(0)赞 (0)

Java

聊聊Java并发面试问题之公平锁与非公平锁是啥?

6

puefu.he 发布于 2019-04-16

先来聊聊非公平锁是啥,现在大家先回过头来看下面这张图。 如上图,现在线程1加了锁,然后线程2尝试加锁,失败后进入了等待队列,处于阻塞中。然后线程1释放了锁,准备来唤醒线程2重新尝试加锁。 注意一点,此时线程2可还停留在等待队列里啊,还没开始尝试重新加锁呢! 然而,不幸的事情发生了...

阅读(20)评论(0)赞 (0)

Java

Java集合系列之—HashMap

3

刘莉莉 发布于 2019-04-16

先看下HashMap的继承体系,它继承自抽象类AbstractMap,实现了Map、Cloneable、Serializable接口,还有较常用的子类LinkedHashMap也实现了Map接口。 public class HashMap<K,V> extends A...

阅读(20)评论(0)赞 (0)

Java

SpringBoot开发案例之整合Dubbo分布式服务

1

刘莉莉 发布于 2019-04-16

在 SpringBoot 很火热的时候,阿里巴巴的分布式框架 Dubbo 不知是处于什么考虑,在停更N年之后终于进行维护了。在之前的微服务中,使用的是当当维护的版本 Dubbox ,整合方式也是使用的 xml 配置方式。 改造前 之前在 SpringBoot 中使用 Dubbox...

阅读(27)评论(0)赞 (0)

Java

《Java并发编程实战》 第二章:线程安全性

5

wenming.gapo 发布于 2019-04-16

线程或者锁在并发编程中的作用,类似于铆钉与工字梁在土木工程中的作用。构建稳健的并发程序,必须正确的使用线程和锁。 其核心在于要对状态访问操作进行管理,特别是对共享的和可变的状态的访问 。 从非正式的意义上说,对象的状态指存储在状态变量(例如实例或静态域)中的数据。对象的状态可能包...

阅读(28)评论(0)赞 (0)

Java

Spring Cloud Alibaba基础教程:Sentinel使用Nacos存储规则

2

hellas 发布于 2019-04-16

通过上一篇 《使用Sentinel实现接口限流》 的介绍,相信大家对Sentinel已经有了初步的认识。在Spring Cloud Alibaba的整合封装之下,接口限流这件事情可以非常轻易的整合到我们的Spring Cloud应用中。但是,通过上篇的整合,依然还不能完美的满足我...

阅读(25)评论(0)赞 (0)

Java

SpringBoot 2.X Kotlin系列之AOP统一打印日志

3

puefu.he 发布于 2019-04-16

在开发项目中,我们经常会需要打印日志,这样方便开发人员了解接口调用情况及定位错误问题,很多时候对于Controller或者是Service的 入参 和 出参 需要打印日志,但是我们又不想重复的在每个方法里去使用 logger 打印,这个时候希望有一个管理者统一来打印,这时Spri...

阅读(23)评论(0)赞 (0)

Java

手写Spring—IOC容器(1)

wenming.gapo 发布于 2019-04-16

反转:依赖对象的获得被反转,变为由自己创建,反转为从IOC容器中获取。 复制代码 带来的好处: 1.代码更为简洁,不需要再去new需要的对象 2.面向接口编程,使用类和具体类解耦,易扩展,替换实现者 3.方便进行AOP增强(没有IOC就无法AOP) 复制代码 IOC容器做什么工作...

阅读(25)评论(0)赞 (0)

编程技术

当我们谈微服务,我们在谈什么 (3) — 如何保障微服务的稳定性

1

邓龙华 发布于 2019-04-16

当一个单体应用改造成多个微服务之后,在请求调用过程中往往会出现更多的问题,通信过程中的每一个环节都可能出现问题。而在出现问题之后,如果不加处理,还会出现链式反应导致服务雪崩。服务治理功能就是用来处理此类问题的。我们将从微服务的三个角色:注册中心、服务消费者以及服务提供者一一说起。...

阅读(40)评论(0)赞 (0)

Java

详解Tomcat三种运行模式(BIO, NIO, APR)的比较和场景分析

4

xiaoli.wang 发布于 2019-04-16

概述 Tomcat8.0起已经默认nio模式,不需要做修改,BIO模式也已经抛弃了,今天主要介绍下tomcat的三种运行模式:BIO、NIO、ARP。 简述及配置运行模式 1、bio:没经过任何优化和处理,几百并发性能极低下。 配置server.xml <Connector...

阅读(32)评论(0)赞 (0)

Java

LinkedBlockingQueue源码解析

1

yeseng 发布于 2019-04-15

上一篇博客,我们介绍了ArrayBlockQueue,知道了它是基于数组实现的有界阻塞队列,既然有基于数组实现的,那么一定有基于链表实现的队列了,没错,当然有,这就是我们今天的主角:LinkedBlockingQueue。ArrayBlockQueue是有界的,那么LinkedB...

阅读(18)评论(0)赞 (0)

Java

ListenalbeFuture的使用总结

wenming.gapo 发布于 2019-04-15

为了提高任务处理速度,我们经常会将一些可并行处理的步骤用异步的方式去处理,如果想要获取异步计算的结果,在Java 8之前更多的用的是 Future + Callable 的方式来实现,下面是使用Future和Callable的一个demo,其中的是 executor.submit...

阅读(24)评论(0)赞 (0)

Java

深入理解 ReentrantReadWriteLock

darida 发布于 2019-04-15

ReentrantLock 是排它锁,它在同一时刻只允许一个线程进行访问。在很多场景中,读服务远多于写服务,而读服务之间不存在数据竞争问题,在一个线程读数据时禁止其他读线程访问,会导致性能降低。 所以就有了读写锁,它在同一时刻可以允许多个读线程访问,但在写线程访问时,则所有的读线...

阅读(20)评论(0)赞 (0)

Java

16.java异常处理

2

darida 发布于 2019-04-15

概念 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常。 异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。 比如说,你的代码少了一个分号,那么运行出来结果是提示是错误java.lang.Error;如果你用Syst...

阅读(17)评论(0)赞 (0)

Java

蚂蚁金服实习生面经总结(已拿口头offer)

6

yeseng 发布于 2019-04-15

我自己总结的Java学习的系统知识点以及面试问题,已经开源,目前已经 35k+ Star。会一直完善下去,欢迎建议和指导,同时也欢迎Star: https://github.com/Snailclimb… 本文来自 Anonymous 的投稿,原文地址: https:...

阅读(21)评论(0)赞 (0)