摘要: 什么是线程安全的类? 当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些进程将如何交替执行,并且在主调代码中不需要额外同步或协同,这个类都能表现出正确的行为,那么就称这个类是线程安全的 线程安全性包含哪些特性? 原子性:提供了互斥访问,同一时刻只能有一个线程对它进行操作 可见性:一个线程 阅读全文
posted @ 2018-05-07 10:46 三杯然诺 阅读(310) 评论(0) 推荐(1) 编辑
摘要: 在atomic包中,大多数类都是借助unsafe类来实现的,如以下代码 incrementAndGet()方法的实现如下: 我们再继续深入getAndInt()方法,实现如下: 在以上代码中我们着重要说的是 compareAndSwapInt(var1, var2, var5, var5 + var 阅读全文
posted @ 2018-05-06 21:17 三杯然诺 阅读(767) 评论(0) 推荐(0) 编辑
摘要: 本篇博客我们主要讲述J.U.C包下的atomic包,在上篇博客“并发模拟”的最后,我们模拟高并发的情形时出现了线程安全问题,怎么解决呢?其实解决的办法有很多中,如直接在add()方法上加synchronized关键字,还有一种就是用atomic包下的类来解决这个问题,这也是现在比较推荐的一种写法,下 阅读全文
posted @ 2018-05-05 18:23 三杯然诺 阅读(803) 评论(0) 推荐(0) 编辑
摘要: 我们要如何模拟一个高并发的环境来检查我们的代码呢?一般常用的方式有三种:利用测试工具ab,利用jmeter,代码模拟。本篇博客着重要说的是代码模拟的实现方式。 在开始写代码之前我们首先了解一下J.U.C中特别重要的两个工具类:CountDownLatch、Semaphore CountDownLat 阅读全文
posted @ 2018-05-03 20:44 三杯然诺 阅读(707) 评论(0) 推荐(1) 编辑
摘要: 相比于线程池,我们可能接触new Thread更多一点,既然有了new Thread我们为什么还要使用线程池呢? new Thread的弊端 a、每次new Thread新建对象,性能差 b、线程缺乏统一管理,可能无限制的新建线程,相互竞争,有可能占用过多系统资源导致死机或者OOM(OutOfMem 阅读全文
posted @ 2018-04-30 20:25 三杯然诺 阅读(750) 评论(1) 推荐(0) 编辑
摘要: 本篇博客主要讲述并发编程中的一些基础内容,并了解一下基本概念。 首先我们了解一下什么是并发? 同时拥有两个或者多个线程,如果程序在单核处理器上运行,多个线程将交替的换入或者换出内存,这些线程是同时“存在”的,每个线程都处于执行过程中的某个状态;如果运行在多核处理器上,此时,程序中的每个线程都将分配到 阅读全文
posted @ 2018-04-29 14:51 三杯然诺 阅读(496) 评论(0) 推荐(0) 编辑
摘要: 垃圾回收我们主要从以下三个方面进行描述 垃圾对象的判断 目前判断对象为垃圾对象有两种方法:引用计数法,可达性分析法,目前普遍是的是可达性分析法 可达性分析法的实现原理: 定义gcroot一直往下找,如果能找到对象,证明该对象在使用,如果找不到该对象,标记该对象应该回收。上图中栈作为gcroot只是其 阅读全文
posted @ 2018-04-26 20:49 三杯然诺 阅读(357) 评论(0) 推荐(0) 编辑
摘要: 关于对象,我们需要面对的问题主要有对象的创建,对象在内存中的布局,对象的结构,对象的访问定位。 对象的创建 对象的创建过程如下图所示: 其主要步骤有:给对象分配内存,初始化对象,执行构造方法。 在对象创建过程中出现的线程安全性问题由线程同步和本地线程分配缓冲来解决 对象在内存中的布局 a、指针碰撞 阅读全文
posted @ 2018-04-24 15:45 三杯然诺 阅读(152) 评论(0) 推荐(0) 编辑
摘要: jvm内存区域总体分为5大块:方法区,java堆,虚拟机栈,本地方法栈,程序计数器,按照线程来分的话又分为线程共享区和线程独占区 程序计数器: a、程序计数器是一块较小的内存空间,可以看做是当前线程所执行的字节码的行号指示器 b、此区域是唯一一个在java虚拟机规范中没有任何outofmemorye 阅读全文
posted @ 2018-04-24 11:58 三杯然诺 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 我们首先来了解一下jdk,jre,jvm的之间的关系 jvm用于运行字节码,如果我们仅仅用于运行java程序,仅部署jre即可,如果我们需要进行java开发则需要jdk环境 java结构内容: java体系结构关系如下图所示: java程序调用java api经过编译,生成字节码文件,将字节码文件交 阅读全文
posted @ 2018-04-24 10:04 三杯然诺 阅读(143) 评论(0) 推荐(0) 编辑