随笔分类 - java基础
java开发
摘要:https://blog.csdn.net/zhangliangzi/article/details/51338291 -参考 双亲委派过程:当一个类加载器收到类加载任务时,立即将任务委派给它的父类加载器去执行,直至委派给最顶层的启动类加载器为止。如果父类加载器无法加载委派给它的类时,将类加载任务退
阅读全文
摘要:一、注解 1.1 概述 注解(Annotation)在JDK1.5之后增加的一个新特性,注解的引入意义很大,有很多非常有名的框架,比如Hibernate、Spring等框架中都大量使用注解。注解作为程序的元数据嵌入到程序。注解可以被解析工具或编译工具解析,此处注意注解不同于注释(comment)。
阅读全文
摘要:https://www.ibm.com/developerworks/cn/java/j-jodatime.html
阅读全文
摘要:1.控制并发线程数的Semaphore Semaphore(信号量)是用来控制同时访问特定资源的线程数量,它通过协调各个线程,保证合理的使用公共资源。 线程可以通过acquire()方法来获取信号量的许可,当信号量中没有可用的许可的时候,线程阻塞,直到有可用的许可为止。线程可以通过release()
阅读全文
摘要:1.CyclicBarrier 字面意思是可循环(Cyclic)使用的屏障(Barrier)。它要做的事情是让一组线程到达一个屏障(同步点)时被阻塞,直到最后一个线程到达屏障时候,屏障才会开门。所有被屏障拦截的线程才会运行。 2.常用的方法: 3.底层原理实现 CyclicBarrier是由Reen
阅读全文
摘要:CountDownLatch 是一个同步工具类,允许一个线程或者多个线程等待其他线程完成操作,再执行。 CountDownLatch和CyclicBarrier的区别: (1).CountDownLatch 的作用是允许1或者多个线程,等待另外N个线程完成某件事情之后,这1个或者多个线程才能执行。C
阅读全文
摘要:项目中经常使用定时器,比如每隔一段时间清理下线过期的F码,或者应用timer定期查询MQ在数据库的配置,根据不同version实现配置的实时更新等等。但是timer是存在一些缺陷的,因为Timer在执行定时任务时只创建一个线程,所以如果存在多个任务,比如两个,第一个任务执行的时间很长,超过两个任务执
阅读全文
摘要:1.什么是可重锁ReentrantLock? 就是支持重新进入的锁,表示该锁能够支持一个线程对资源的重复加锁。底层实现原理主要是利用通过继承AQS来实现的,也是利用通过对volatile state的CAS操作+CLH队列来实现; 支持公平锁和非公平锁。 CAS:Compare and Swap 比
阅读全文
摘要:1.什么是AQS? AQS的核心思想是基于volatile int state这样的volatile变量,配合Unsafe工具对其原子性的操作来实现对当前锁状态进行修改。同步器内部依赖一个FIFO的双向队列来完成资源获取线程的排队工作。 2.同步器的应用 同步器主要使用方式是继承,子类通过继承同步器
阅读全文
摘要:官方文档翻译: 如果本线程是处于阻塞状态:调用线程的wait(), wait(long)或wait(long, int)会让它进入等待(阻塞)状态,或者调用线程的join(), join(long), join(long, int), sleep(long), sleep(long, int)也会让
阅读全文
摘要:join方法的源码: 给一个例子来理解: 输出结果: 代码运行整个过程说明入下图:
阅读全文
摘要:1.计算机内存模型的相关概念原理 计算机在执行程序时,每条指令都是在CPU中执行的,在指令的执行过程中,涉及到数据的读取和写入。由于程序在运行的过程中数据是放在"主存"中的, 由于数据从主存中读取数据和写入数据要比CPU执行指令的速度慢的多,如果任何时候对数据的操作都需要通过和主存进行交互,会大大降
阅读全文
摘要:ArrayBlockingQueue的原理和底层实现的数据结构 : ArrayBlockingQueue是数组实现的线程安全的有界的阻塞队列,可以按照 FIFO(先进先出)原则对元素进行排序。 线程安全是指,ArrayBlockingQueue内部通过“互斥锁”保护竞争资源,实现了多线程对竞争资源的
阅读全文
摘要:ConcurrentHashMap结构图如下: ConcurrentHashMap实现类图如下: segment的结构图如下: 参考文章: 1.https://www.ibm.com/developerworks/cn/java/java-lo-concurrenthashmap/ 2.http:/
阅读全文
摘要:概述 HashMap是非线程安全的,HashTable是线程安全的。 那个时候没怎么写Java代码,所以根本就没有听说过ConcurrentHashMap,只知道面试的时候就记住这句话就行了…至于为什么是线程安全的,内部怎么实现的,通通不了解。今天我们将深入剖析一个比HashTable性能更优的线程
阅读全文
摘要:package concurrentMy; /** * * (位运算符) * * * 修改历史: * 修改日期 修改人员 版本 修改内容 * -----------------------------------------...
阅读全文
摘要:ThreadFactory翻译过来是线程工厂,顾名思义,就是用来创建线程的,它用到了工厂模式的思想。它通常和线程池一起使用,主要用来控制创建新线程时的一些行为,比如设置线程的优先级,名字等等。它是一个接口,接口中只有一个方法: 下面定义MyThreadFactoryTest1类实现ThreadFac
阅读全文
摘要:引言 在 JAVA 语言中有8中基本类型和一种比较特殊的类型String。这些类型为了使他们在运行过程中速度更快,更节省内存,都提供了一种常量池的概念。常量池就类似一个JAVA系统级别提供的缓存。 8种基本类型的常量池都是系统协调的,String类型的常量池比较特殊。它的主要使用方法有两种: 直接使
阅读全文

浙公网安备 33010602011771号