Java
文章平均质量分 73
Ar-Peng
梦想与现实的那段距离叫努力!!!
展开
-
乐观锁与悲观锁
悲观锁将事情按照最坏的情况来进行处理,认为共享资源每次被访问时都可能会出现问题(如:共享数据被修改),因此在获取资源时都会做一个加锁操作,这样其他的线程想要拿到该资源就会本阻塞到上一个锁持有者使用完释放锁。简单来说就是共享资源只能被一个线程使用,其他线程阻塞等待该线程使用完后进行资源抢夺使用。synchronized和ReentrantLock等独占锁就是悲观锁思想的实现,悲观锁通常使用在写操作上,可以有效避免频繁失败和性能影响。原创 2023-02-08 20:41:09 · 666 阅读 · 1 评论 -
synchronized使用及原理
在java中我们对于synchronized锁是不可避免的,在jdk1.5之前它是一个重量级锁,相对于juc 里的lock显得十分笨重。因此在jdk1.6之后Java官方对synchronized进行优化处理。synchronized 是 Java 中的一个关键字,翻译成中文是同步的意思,主要解决的是多个线程之间访问资源的同步性,可以保证被它修饰的方法或者代码块在任意时刻只能有一个线程执行。在 Java 早期版本中,synchronized 属于 重量级锁,效率低下。原创 2023-02-08 10:54:28 · 315 阅读 · 0 评论 -
jdk1.7及以前使用的random方法
每个Random实例里面都有一个原子性的种子变量用来记录当前的种子值,当要生成新的随机数时需要根据当前种子计算新的种子并更新回原子变量。在多线程下使用单个Random实例生成随机数时,当多个线程同时计算随机数来计算新的种子时,多个线程会竞争同一个原子变量的更新操作,由于原子变量的更新是CAS操作,同时只有一个线程会成功,所以会造成大量线程进行自旋重试,这会降低并发性能,所以ThreadLocalRandom应运而生。原创 2023-01-22 13:12:54 · 234 阅读 · 0 评论 -
springboot生成验证码kaptcha
生成验证码原创 2022-07-18 21:42:49 · 746 阅读 · 0 评论