路漫漫,水迢迢

八十一难拦路七十二变制敌

精通Dubbo——Dubbo使用指南

从今天开始我们一起学习一款高兴RPC框架Dubbo,我们从Dubbo的使用到源码逐步深入学习与分析。 Dubbo 是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成,是阿里巴巴SOA服务化治理方案的核心框架。D...

2017-05-31 21:26:26

阅读数:3668

评论数:1

Java多线程中FutureTask详解与正式环境问题定位

通过FutureTask的源码我们可以看到FuturenTask类实现了RunnableFuture接口,继承了Runnable和Future接口。 public class FutureTask implements RunnableFuture public interface Runn...

2017-05-27 18:51:00

阅读数:1252

评论数:0

Java线程Executor框架详解与使用

在HotSpot VM的线程模型中,Java线程被一对一映射为本地操作系统线程。Java线程启动时会创建一个本地操作系统线程;当该Java线程终止时,这个操作系统线程也会被回收,在JVM中我们可以通过-Xss设置每个线程的大小。操作系统会调度所有线程并将它们分配给可用的CPU。 在上层,Java...

2017-05-26 22:55:29

阅读数:4036

评论数:0

Java线程池(ThreadPoolExecutor)原理分析与使用

在我们的开发中“池”的概念并不罕见,有数据库连接池、线程池、对象池、常量池等等。下面我们主要针对线程池来一步一步揭开线程池的面纱。使用线程池的好处1、降低资源消耗 可以重复利用已创建的线程降低线程创建和销毁造成的消耗。 2、提高响应速度 当任务到达时,任务可以不需要等到线程创建就能立即执行。...

2017-05-25 21:52:32

阅读数:6984

评论数:4

Java中的常用阻塞队列源码分析

定义支持阻塞的插入方法:意思是当队列满时,队列会阻塞插入元素的线程,直到队列不满。支持阻塞的移除方法:意思是在队列为空时,获取元素的线程会等待队列变为非空。 阻塞队列常用于生产者和消费者的场景,生产者是向队列里添加元素的线程,消费者是从队列里取元素的线程。阻塞队列就是生产者用来存放元素、消费者用...

2017-05-24 21:46:25

阅读数:1883

评论数:0

Java并发中的ConcurrentLinkedQueue源码分析

本文中多次提到CAS算法,先做个CAS算法的简单描述CAS(非阻塞算法)说明CAS有3个操作数,内存值V,旧的预期值A,要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。 ConcurrentLinkedQueue是一种线程安全的队列。他是使用非阻塞算法(CA...

2017-05-23 21:42:44

阅读数:2332

评论数:2

ConcurrentHashMap原理详解

ConcurrentHashMap是既高效又线程安全的HashMapHashTable和ConcurrentHashMap区别HashTable容器使用synchronized来保证线程安全,但在线程竞争激烈的情况下HashTable的效率非常低下。因为当一个线程访问HashTable的同步方法,...

2017-05-22 21:30:43

阅读数:724

评论数:0

Java多线程Condition接口原理详解

Condition接口提供了类似Object的监视器方法,与Lock配合可以实现等待/通知模式,但是这两者在使用方式以及功能特性上还是有差别的 Condition接口详解Condition定义了等待/通知两种类型的方法,当前线程调用这些方法时,需要提前获取到Condition对象关联的锁。Con...

2017-05-21 19:15:23

阅读数:3725

评论数:3

程序员福利——几个不错的技术微信公众号

1、阿里技术  (ali_tech) 阿里巴巴官方技术号,关于阿里的技术创新均将呈现于此2、程序员大咖 (CodePush)为程序员提供最优质的博文、最精彩的讨论、最实用的开发资源;提供最新最全的编程学习资料:PHP、Objective-C、Java、Swift、C/C++函数库、.NET Fra...

2017-05-21 12:12:50

阅读数:4944

评论数:2

Java多线程读写锁ReentrantReadWriteLock原理详解

ReentrantLock属于排他锁,这些锁在同一时刻只允许一个线程进行访问,而读写锁在同一时刻可以允许多个线程访问,但是在写线程访问时,所有的读和其他写线程都被阻塞。读写锁维护了一对锁,一个读锁和一个写锁,通过分离读锁和写锁,使得并发性相比一般的排他锁有了很大提升。 下面我们来看看读写锁Ree...

2017-05-21 11:58:45

阅读数:3827

评论数:2

Java线程并发中的锁——ReentrantLock(重入锁)原理详解

ReentrantLock是一个重入锁,可以支持一个线程对资源重复加锁,他还支持公平加锁和非公平加锁。synchronized关键字也隐式的支持重进入,比如一个synchronized修饰的递归方法,在方法执行时,执行线程在获取了锁之后仍能连续多次地获得该锁ReentrantLock虽然没能像sy...

2017-05-20 18:32:37

阅读数:1068

评论数:0

Java线程并发中的锁——Lock(下)

接上篇文章独占式同步状态获取与释放通过调用同步器的acquire(int arg)方法可以获取同步状态,该方法对中断不敏感,也就是由于线程获取同步状态失败后进入同步队列中,后续对线程进行中断操作时,线程不会从同步队列中移出,代码示例:public final void acquire(int ar...

2017-05-20 11:27:36

阅读数:1516

评论数:0

Java线程并发中的锁——Lock(上)

Lock接口锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁能够防止多个线程同时访问共享资源(但是有些锁可以允许多个线程并发的访问共享资源,比如读写锁)。在Lock接口出现之前,Java程序是靠synchronized关键字实现锁功能的,而Java SE 5之后,并发包中新增了Lock接口...

2017-05-19 18:17:11

阅读数:821

评论数:0

线程池原理详解与Java代码示例

为什么使用线程池对于服务端的程序,经常面对的是客户端传入的短小(执行时间短、工作内容较为单一)任务,需要服务端快速处理并返回结果。如果服务端每次接受到一个任务,创建一个线程,然后进行执行,这在原型阶段是个不错的选择,但是面对成千上万的任务递交进服务器时,如果还是采用一个任务一个线程的方式,那么将会...

2017-05-18 18:13:45

阅读数:522

评论数:1

数据库连接池原理详解与自定义连接池实现

实现原理数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中,这些数据库连接的数量是由最小数据库连接数制约。无论这些数据库连接是否被使用,连接池都将一直保证至少拥有这么多的连接数量。连接池的最大数据库连接数量限定了这个连接池能占有的最大连接数,当应用程序向连接池请求的连接数超过最大连接数量...

2017-05-17 18:18:54

阅读数:16692

评论数:6

ThreadLocal详解

ThreadLocal,即线程变量,是一个以ThreadLocal对象为键、任意对象为值的存储结构。这个结构被附带在线程上,也就是说一个线程可以根据一个ThreadLocal对象查询到绑定在这个线程上的一个值。 ThreadLocal源码分析我们看下ThreadLocal几个关键方法get()/*...

2017-05-16 18:30:23

阅读数:467

评论数:0

Java多线程并发中的双重检查锁定与延迟初始化

双重检查锁定与延迟初始化在Java多线程程序中,有时候需要采用延迟初始化来降低初始化类和创建对象的开销。双重检查锁定是常见的延迟初始化技术。 下面我们看一个非线程安全的延迟初始化对象的例子:public class Singleton { private static Singleton...

2017-05-15 18:18:44

阅读数:577

评论数:0

Java多线程中的内存模型

内存模型在Java中,所有实例域、静态域和数组元素都存储在堆内存中,堆内存在线程之间共享。局部变量(Local Variables),方法定义参数(Java语言规范称之为Formal Method Parameters)和异常处理器参数(ExceptionHandler Parameters)不会...

2017-05-14 19:35:19

阅读数:810

评论数:0

Java多线程volatile详解

volatile定义Java编程语言允许线程访问共享变量,为了确保共享变量能被准确和一致地更新,线程应该确保通过排他锁单独获得这个变量。Java语言提供了volatile,在某些情况下比锁要更加方便。如果一个字段被声明成volatile,Java线程内存模型确保所有线程看到这个变量的值是一致的。v...

2017-05-14 11:06:31

阅读数:1116

评论数:0

Java多线程死锁与资源限制详解

锁是个非常有用的工具,运用场景非常多,因为它使用起来非常简单,而且易于理解。但同时它也会带来一些困扰,那就是可能会引起死锁,一旦产生死锁,就会造成系统功能不可用。死锁的概念那什么是死锁呢?所谓死锁: 是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力...

2017-05-13 21:46:54

阅读数:890

评论数:0

提示
确定要删除当前文章?
取消 删除