
java
文章平均质量分 55
你们都是坏孩子00
现在的一身轻松,是因为有人替你负重前行
展开
-
一次由于SecureRandom使用不当引起的线程阻塞
问题起因一个对外提供的接口,中间需要调用第三方接口,涉及到三方机密问题,其中使用到了安全随机数之前的写法如下public static String randomCode() { Random r = new Random(); StringBuilder str = new StringBuilder(); for (int i=0;i<6;i++){ ...原创 2020-05-06 15:24:30 · 1690 阅读 · 0 评论 -
ThreadLocal
ThreadLocal是什么ThreadLocal,很多地方叫做线程本地变量,也有些地方叫做线程本地存储,其实意思差不多。可能很多朋友都知道ThreadLocal为变量在每个线程中都创建了一个副本,那么每个线程可以访问自己内部的副本变量。通常我们在使用jdbc做数据库连接时是需要手动控制事物的,这个时候就要保证数据库连接connection在同一个线程中的唯一性,而connection又不是单...原创 2019-03-17 18:35:51 · 162 阅读 · 0 评论 -
一段代码查看线程状态
DEMOpackage thread;import java.util.concurrent.TimeUnit;public class ThreadStatusDemo { public static void main(String[] args) { new Thread(new Runnable() { public void ru...原创 2019-07-29 22:02:47 · 426 阅读 · 0 评论 -
责任链设计模式
责任链设计模式概念场景利用责任链设计模式实现责任链设计模式优化结束语概念责任链(chain of responsibility)模式很像异常的捕获和处理,当一个问题发生的时候,当前对象看一下自己是否能够处理,不能的话将问题抛给自己的上级去处理,但是要注意这里的上级不一定指的是继承关系的父类,这点和异常的处理是不一样的。所以可以这样说,当问题不能解决的时候,将问题交给另一个对象去处理,就这样一直...原创 2019-07-25 23:19:36 · 186 阅读 · 0 评论 -
ReentrantLock的实现原理
ReentrantLock的加锁时序图ReentrantLock类图分析的几个问题ReentrantLock是如何实现加锁的当锁被其他线程占用时当前线程是如何处理的带着这两个问题分析一下ReentrantLock加锁过程ReentrantLock的加锁过程很简单就是采用CAS操作将锁标记设置成有锁状态源码如下final void lock() { //当没有线程占用锁资源...原创 2019-08-04 20:30:17 · 450 阅读 · 0 评论 -
线程池的使用和工作原理
开篇本文将从以下三个方面介绍线程池线程池的七个参数线程的使用自定义一个线程池一个任务提交会经历哪些步骤JDK线程池是如何保证核心线程一直存活的线程池的七个参数java源码/** * Creates a new {@code ThreadPoolExecutor} with the given initial * parameters. * ...原创 2019-09-24 22:26:59 · 234 阅读 · 0 评论 -
自定义阻塞队列
自定义阻塞队列这个自定义阻塞队列基本就是jdk阻塞队列的实现public class MyBlockQueue<E> { /** * 锁 保证并发安全 */ private ReentrantLock lock = new ReentrantLock(); /** * 队列元素 */ private fina...原创 2019-09-25 21:04:32 · 391 阅读 · 0 评论