摘要: 重入锁 Java中的重入锁(即ReentrantLock) 与JVM内置锁(即synchronized)一样,是一种排它锁。 ReentrantLock提供了多样化的同步,比如有时间限制的同步(定时锁),可以被Interrupt的同步,即中断锁 (synchronized的同步是不能Interrup 阅读全文
posted @ 2017-04-24 20:01 张俊鸿 阅读(3087) 评论(1) 推荐(0) 编辑
摘要: java中,可能有一些场景,操作非常简单,但是容易存在并发问题,比如i++, 此时,如果依赖锁机制,可能带来性能损耗等问题, 于是,如何更加简单的实现原子性操作,就成为java中需要面对的一个问题。 在backport-util-concurrent没有被引入java1.5并成为JUC之前, 这些原 阅读全文
posted @ 2017-04-24 19:04 张俊鸿 阅读(2326) 评论(1) 推荐(0) 编辑
摘要: JUC java.util.concurrent包, 这个包是从JDK1.5开始引入的,在此之前,这个包独立存在着,它是由Doug Lea开发的,名字叫backport-util-concurrent, 在1.5开始引入java,命名路径为java.util.concurrent,其中的基本实现方式 阅读全文
posted @ 2017-04-24 18:29 张俊鸿 阅读(954) 评论(1) 推荐(0) 编辑
摘要: 同步的基本思想 为了保证共享数据在同一时刻只被一个线程使用,我们有一种很简单的实现思想,就是 在共享数据里保存一个锁 ,当没有线程访问时,锁是空的。 当有第一个线程访问时,就 在锁里保存这个线程的标识 并允许这个线程访问共享数据。 在当前线程释放共享数据之前,如果再有其他线程想要访问共享数据,就要  阅读全文
posted @ 2017-04-24 17:09 张俊鸿 阅读(8370) 评论(2) 推荐(1) 编辑
摘要: 引言 在多线程并发编程中synchronized和Volatile都扮演着重要的角色,Volatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的“可见性”。 可见性的意思是当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值。 它在某些情况下比synchroniz 阅读全文
posted @ 2017-04-24 16:28 张俊鸿 阅读(721) 评论(1) 推荐(0) 编辑
摘要: 引言 很多人都对其中的一些概念不够明确,如同步、并发等等,让我们先理清一些概念,以免产生误会。 多线程:指的是这个程序(一个进程)运行时,产生了不止一个线程。 并行与并发: 并行:多个cpu实例或者多台机器同时执行一段处理逻辑,是真正的同时。 并发:通过cpu调度算法,让用户看上去同时执行,实际上从 阅读全文
posted @ 2017-04-24 14:59 张俊鸿 阅读(729) 评论(1) 推荐(0) 编辑
摘要: 学习Java GC机制的目的是为了实用,也就是为了在JVM出现问题时分析原因并解决之。 本篇,来看看[ 如何监控和优化GC机制。] 通过学习,我觉得JVM监控与调优,主要在3个着眼点上: 1,如何配置? 2,如何监控? 3,如何优化? 首先,先来看看[1,如何配置?] 参数设置 在Java虚拟机的参 阅读全文
posted @ 2017-04-24 11:46 张俊鸿 阅读(324) 评论(1) 推荐(0) 编辑
摘要: 学习Java GC机制,可以帮助我们在日常工作中 排查各种内存溢出或泄露问题,解决性能瓶颈,达到更高的并发量,写出更高效的程序。 我们将从4个方面学习Java GC机制, 1,内存是如何分配的; 2,哪些内存需要回收; 3,在什么情况下执行GC以及执行GC的方式; 4,如何监控和优化GC机制。 先来 阅读全文
posted @ 2017-04-23 19:06 张俊鸿 阅读(656) 评论(0) 推荐(0) 编辑
摘要: Java垃圾收集(Garbage Collection,GC) 某一个时点,一个对象如果有一个以上的引用(Rreference)指向它,那么该对象就为活着的(Live), 否则死亡(Dead),视为垃圾,可被垃圾回收器回收再利用。 垃圾回收操作需要消耗CPU、线程、时间等资源,所以容易理解的是垃圾回 阅读全文
posted @ 2017-04-23 18:54 张俊鸿 阅读(275) 评论(0) 推荐(0) 编辑
摘要: 执行引擎是Java虚拟机的核心组成部分之一。 首先,想想C++和Java在编译和运行时到底有啥不一样? 下图左边,C++发布的就是机器指令, 而下图右边Java发布的是字节码,字节码在运行时通过JVM的类加载器,加载到JVM的虚拟内存的方法区, 再通过编译器、解释器做一次转换生成机器指令。执行引擎正 阅读全文
posted @ 2017-04-23 17:46 张俊鸿 阅读(854) 评论(0) 推荐(0) 编辑