91名师指路-头部
首页
发布需求
项目流程图
客服QQ
登录
注册
付费问答
付费问答
技术博客
源码买卖
付费问答
技术博客
源码买卖
资料下载
日程管理
91小程序
让能力变成价值! 不止写博客能赚钱,上传源码也能赚钱。例如:您写了一篇博客,当网友遇到问题咨询您时会向你支付咨询费,并且下载您上传的源码也会向您支付对应的费用。
博客列表-91名师指路91mszl.com-让能力变成价值
博客分类
前端
jquery
Nodejs
vue
Angular
Html5
bootstrap
其他
后端
java
C#
Python
Php
C++
Ruby
Go
Erlang
其他
移动开发
ios
Android
微信支付
微信小程序
支付宝支付
银联支付
Windows Phone
其他
数据库
Oracle
Sqlserver
Db2
Mysql
MongoDB
Postgresql
其他
测试
loadrunner
jmeter
其他
运维
jenkins
svn
Git
sonarqube
Nginx
Cdn
jdk
Maven
Windows系统
Linux系统
其他
工作流
Activiti
jbpm
其他
搜索引擎
solr
lucene
ElasticSearch
其他
缓存
Redis
memCache
其他
消息队列
ActiveMQ
RabbitMQ
ZeroMQ
Kafka
MetaMQ
RocketMQ
写博客
博客管理
原
java CountDownLatch的用法
CountDownLatch:让一些线程阻塞直到另外一些线程完成后才被唤醒。CountDownLatch主要有两个方法,当一个或多个线程调用await方法时,调用线程会被阻塞,其他线程调用countDown方法计数器减1(调用countDown方法时线程不会阻塞),当计数器的值变为0,因调用await方法被阻塞的线程会被唤醒,继续执行场景:假设我们现在教室里面一共有6个人,分别为5个学生和一个老师
2019-12-01 14:09:01 阅读(1587)
原
java ReentrantReadWriteLock 读写锁
独占锁:指该锁一次只能被一个线程所持有。ReentrantLock和synchronized都是独占锁。共享锁:指该锁可以被多个线程所持有。对ReentrantReadWriteLock其读锁是共享锁,其写锁是独占锁。读锁的共享锁可保证并发读是非常高效的,读写,写读,写写的过程是互斥的。验证读写锁代码如下:package com.mszl.thread;import java.util.HashM
2019-11-28 10:31:01 阅读(1063)
原
java 自旋锁
自旋锁(spinlock):是指尝试获取锁的线程不会立即阻塞,而是采用循环的方式去尝试获取锁,这样的好处是减少线程上下文切换的消耗,缺点是循环会消耗CPU。手写一个自旋锁的代码如下:package com.mszl.thread;import java.util.concurrent.atomic.AtomicReference;/** * 功能:手写一个自旋锁 * 备注:更多资料请访问 http
2019-11-27 16:07:44 阅读(1096)
原
java ReentrantLock 可重入锁(也叫递归锁)
可重入锁:指的是同一线程外层函数获得锁之后,内存递归函数仍然能获取该所的代码,在同一个线程的外层方法获取锁的时候,在进入内层方法会自动获取锁也就是说:线程可以进入任何一个它已经拥有的锁所同步着的代码块。看完官方的解释后你是不是很蒙蔽,给大家举个例子就明白了:相当于我们只要拿到我们进入家里大门的钥匙(锁)后,就可以进入各个房间,而不用在去获取各个房间的钥匙(锁)。备注:ReentrantLock和s
2019-11-26 22:38:05 阅读(1163)
原
java 公平锁和非公平锁
公平锁:就是很公平,在并发环境中,每个线程在获取锁时,会先查看此锁维护的等待队列,如果为空或者当前线程是等待队列的第一个,就占有锁,否则就会加入到等待队列中,以后会按照FIFO(先进先出)的规则从队列中取到自己。非公平锁:非公平锁比较粗暴,上来就直接尝试占有锁,如果尝试失败,就在采用类似公平锁的那种方式。非公平锁的优点:吞吐量比公平锁大。备注:(1)并发包ReentrantLock的创建可以通过指
2019-11-26 19:43:20 阅读(918)
原
hashMap 线程不安全的演示和解决方案
一:hashMap线程不安全的代码演示:package com.mszl.thread;import java.util.HashMap;import java.util.Map;import java.util.UUID;/** * 功能:hashMap线程不安全的演示和解决方案 * 备注:更多资料请访问 http://www.91mszl.com * @author bobo teacher
2019-11-26 15:13:29 阅读(1002)
原
hashSet 线程不安全的演示和解决方案
概述:hashset线程不安全,底层是hashMap。(1)如何证明hashSet线程不安全。(2)如何解决hashSet线程不安全。(3)底层是hashMap,但是hashMap的add方法是添加k和v,为什么hashSet可以只添加k就可以了。带着这三个疑问,我们下面来进行解答。一:如何证明hashset线程不安全。代码如下:package com.mszl.thread;import jav
2019-11-26 13:05:51 阅读(1294)
原
ArrayList 线程不安全的演示和解决方案
概述:arrayList 线程不安全,默认长度为10带着如下疑问我们来各个击破。(1)arrayList为什么是线程不安全的。(2)如何证明arrayList是线程不安全的。(3)arrayList既然线程不安全,如何解决。一:arrayList为什么是线程不安全的。答:因为看源码得知,arrayList的add方法没有加synchronized二:如何证明arrayList是线程不安全的代码如下
2019-11-26 11:14:34 阅读(991)
原
ABA问题的演示和解决方案
ABA问题的名词解释:ABA问题具体是什么意思,如下图所示。假设我们主内存的值为100,线程T1和T2在初始状态下,都会拷贝一个副本到自己的工作内存中,即T1和T2都是100,T1执行完需要10秒钟,T2执行完需要2秒钟,假设T2先将100改为了80,然后和主内存进行比较发现没有被改动,于是更改主内存的值为80,然后T2在将80改为了60,T2在由60改为100,T2更改完成后,假设T1此时执行完
2019-11-25 15:15:47 阅读(1371)
原
CAS的介绍
CAS的全称为Compare-And-Swap,意思是比较并交换。即比较当前工作内存中的值和主内存中的值,如果相同则执行规定操作,否则继续比较直到主内存和工作内存中的值一致为止。CAS应用CAS有3个操作数,内存值V,旧的预期值A,要修改的更新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。代码如下:package com.mszl.thread;import java
2019-11-25 12:02:28 阅读(1146)
共 479 行数据
首页
上一页
33
34
35
36
37
38
39
40
下一页
尾页
到第
页
确定
91名师指路-底部