ignorewho的博客

笑你我枉花光心计 爱竞逐镜花那美丽

JAVA并发-终止线程小结

前言: 前面我们对线程的中断机制有了一定了解,线程中断机制可以在某些情况下可以实现线程的终止,使线程进入TERMINATED状态,但是线程的终止方法不止于这一种,为了更好地了解线程的终止,通过自己写代码并学会了如何优雅地终止线程。   通过搜集一些网上资料,大多数提到的就是常用的三种方法: ...

2018-07-18 13:31:59

阅读数:29

评论数:0

JAVA并发-线程中断机制

   前言:之前在看Thread源码的时候,看到interrupt相关的方法,回想之前一直经常遇到的InterruptedException,于是决定好好了解一下interrupt机制,这就是我们经常提起的线程中断机制,以前遇到中断异常时,经常性地忽略该异常,其实这是一种很不负责的做法,在深入学习...

2018-07-09 16:30:08

阅读数:25

评论数:0

JAVA并发-sychronized优化

接着上一篇:JAVA并发-sychronized原理既然学习了一波原理,也晓得sychronized后续是被优化过的,所以今天就研究下sychronized优化机制,学习是一个循序渐进的过程,让我们出发吧!!!sychronized优化前是怎样的?1.我们知道sychronized锁操作底层是基于...

2018-07-05 16:50:22

阅读数:52

评论数:0

JAVA并发-探究sychronized底层实现原理

前言:之前一直对sychronized的原理不是特别清楚,只知道在jdk1.6之前使用sychronized锁性能较低,后续进行了优化,加入了偏向锁、自旋等机制来提高sychronized性能,但是抱着模棱两可的心态总是很受的,于是特意学习了一波,充实自己,也分享于大家,本文主要是对sychron...

2018-07-02 17:51:05

阅读数:197

评论数:3

JAVA并发-Monitor简介

什么是Monitor?1.Monitor是一种用来实现同步的工具2.与每个java对象相关联,即每个java对象都有一个Monitor与之对应3.Monitor是实现Sychronized(内置锁)的基础Monitor的基本结构是什么?1.Owner字段:初始时为NULL表示当前没有任何线程拥有该...

2018-06-29 11:39:27

阅读数:989

评论数:0

JAVA并发-sychronized和Lock的简单区别

sychronized:java内置特性,不需要手工释放锁,功能较为单一,是一种非公平可重入锁Lock:java并发包下的接口,功能较为齐全,使用更加灵活,但需要手工释放锁,其中ReentrantLock支持公平锁和非公平锁并且是可重入锁...

2018-05-24 08:36:44

阅读数:32

评论数:0

JAVA并发-volatitle简介

作用:具有synchronized的可见性特性,但是不具备原子特性,可以看成是一种轻量级的同步机制,编码较少,开销也小应用场景:在有限的场景下替代锁,必须满足两个条件:一、变量的修改不依赖于当前值 二、该变量没有包含在具有其他变量的不变式中,简而言之:volatitle变量修改的值独立于程序的任何...

2018-05-23 16:26:16

阅读数:21

评论数:0

JAVA并发-各种锁类型

悲观锁:假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作乐观锁:假定不会发生并发冲突,只在提交时检查是否违反数据完整性的操作java中的悲观锁和乐观锁:java的独占锁就是一种悲观锁,例如sychronized、lock,缺点:存在进程频繁挂起和恢复的性能消耗java的CAS就是乐观锁的一种应...

2018-05-23 16:24:03

阅读数:71

评论数:0

JAVA并发-死锁分析

分析死锁步骤:1.通过jps命令找出java线程id2.通过jstack -l pid > test.txt,将堆栈信息打印到文件3.查看堆栈信息中状态为Blocked阻塞状态的线程,分析其正在请求哪个锁并锁住了哪个对象,然后看这个锁被哪个线程持有并查看该线程在请求哪个锁,如...

2018-05-23 16:21:52

阅读数:13

评论数:0

JAVA并发-如何提升效率

首先确认并发访问的瓶颈在哪?1.网络带宽不够2.web线程连接数不够3.数据库查询性能达不到根据不同情况,确认解决办法1.增加网络带宽,DNS域名解析分发多台服务器2.负载均衡,前置代理服务器nignx、apache3.数据库查询优化,读写分离,分表分区使用缓存,例如:memcached,本地缓存...

2018-05-23 16:20:15

阅读数:79

评论数:0

JAVA并发-ReentrantLock怎么实现非公平锁和公平锁

非公平:1.调用lock()方法时,首先去通过CAS尝试设置锁资源的state变量,如果设置成功,则设置当前持有锁资源的线程为当前请求线程2.调用tryAcquire方法时,首先获取当前锁资源的state变量,如果为0,则通过CAS去尝试设置state,如果设置成功,则设置当前持有锁资源的线程为当...

2018-05-23 16:17:53

阅读数:53

评论数:0

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