随笔分类 -  java基础

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