
java并发
乾月
学生一只,后来到福报厂了
展开
-
影响并发性能的原因
影响并发性能的原因上下文切换CPU 通过时间片分配来并发执行任务,当前任务执行一个时间片后就会切换到下一个任务 ,切换之前会保存当前任务的状态。从保存这个任务的状态到再加载的一次过程就是一次上下文的切换。过多的上下文切换会带来一些不必要的性能消耗,减少上下文切换的方法有以下几个: 无锁并发编程 CAS算法 使用最少线程和使用协程 无锁并发编程多线...原创 2019-06-06 17:54:50 · 1316 阅读 · 0 评论 -
用jvisualvm分析dump文件
用jvisualvm分析dump文件最近有一个java服务的堆内存溢出,然后僵死了,在重启服务之前用jmap命令生成了一份dump文件便于后面分析。生成dump文件的命令:jmap -dump:format=b,file=20170307.dump 16048file后面的是自定义的文件名,最后的数字是进程的pid。使用jvisualvm来分析dump文件:jvisu...原创 2019-06-06 17:58:26 · 12981 阅读 · 0 评论 -
并发实现原理
并发实现原理volatilejava内存模型中,volatile声明的变量让所有线程都是可见的而且看到时唯一的。实现原理修改volatile 变量时,所产生的汇编代码会加上 Lock前缀,Lock前缀有两个作用 把当前处理器缓存行写会内存中 对于其他CPU缓存了该地址的数据失效 当处理器把volatile变量写回内存,因为缓存一致协议,其他CPU在嗅探总线...原创 2019-06-06 18:00:56 · 1096 阅读 · 0 评论 -
Java中的锁
锁LockLock接口提供的synchronized所不具备的主要特性特性 描述 尝试非阻塞地获取锁 当前线程尝试获取锁,如果这一时刻锁没有被其他线程获取到,则成功获取并持有锁 能被中断地获取锁 与synchronized不同,获取到的锁能够响应中断,当获取到锁的线程被中断时,中断异常将会被抛出,同时锁会被释放 超时获取锁 在指定的时间截止之前获取锁...原创 2019-06-14 13:44:51 · 155 阅读 · 0 评论 -
原子操作
Java中的原子基本类型有 AtomicBoolean AtomicInteger AtomicLong 常用操作有AtomicInteger的常用方法有: int addAndGet(int delta):以原子的方式将输入的值与实例中的值(AtomicInteger里的value)相加,并把结果返回 boolean compareA...原创 2019-06-14 15:37:23 · 195 阅读 · 0 评论 -
ThreadPoolExecutor线程池
线程池开发中几乎所有的并发或者异步程序都可以使用线程池,它能带来三个好处:降低资源消耗。通过复用已存在的线程和降低线程关闭的次数来尽可能降低系统性能损耗; 提升系统响应速度。通过复用线程,省去创建线程的过程,因此整体上提升了系统的响应速度; 提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,因此,需要使用线程池来管理线程。线程池的工...原创 2019-06-14 17:07:09 · 214 阅读 · 0 评论 -
并发测试工具
并发测试工具一、PostmanPostman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。官方网站:https://www.getpostman.com/Postman常用于接口的测试,比如GET,POST等接口的测试...原创 2019-06-15 14:40:47 · 62644 阅读 · 16 评论 -
Java 内存模型
Java 内存模型基础知识线程同步同步是指程序中用于控制不同线程间操作发生相对顺序的机制,共享内存模型中,同步必须显式的控制,代码中某个部分需要在线程之间互斥操作。线程通信线程之间交换信息称之为线程通信。线程通信的机制有两种: 共享内存:通过读写内存的公共状态进行 消息传递:线程之间没有公共状态,必须发送消息来进行显式的通信 内存模型JMM规定了线程和主...原创 2019-06-11 15:38:09 · 162 阅读 · 0 评论