博客
分类
标签
归档
关于
博客
分类
标签
归档
关于
Tau的博客
文章
分类
标签
归档
关于
Java中的并发工具类
CountDownLatch 多线程的使用中往往有这样的场景:某个线程需要等到其他线程执行完毕后才能继续执行,即线程的“等待其他线程”的功能(注意这里说的不是wait())。这时候就可以用CountDownLatch类来实现,当然了,Thread.join()方法也具有这个功能,只不过相比之下,CountDownLatch功能更加丰富。 通过一个例子来看下: 1234567891011121...
2019-12-02
Java
Java
Read More
Java中的等待/唤醒机制
等待/唤醒机制是多线程之间进行通信(同步)的一种方式,这里对它在Java中的使用做一个总结。 Object的wait()和notify() 这个算是比较原始的一种等待/唤醒机制,这两个方法都是Object类中定义的方法,也就是说每个对象都拥有这两个方法。 它们一般都是和synchronized关键字配合使用的。 Condition接口 Condition接口是为了对Lock的一个等待/通知机...
2019-11-28
Java
Java
Read More
Java中的Condition
前面的文章中,我们了解了Java中的Lock接口,以及相关的实现类ReentrantLock、ReentrantReadWriteLock。它们都是通过聚合一个AQS来实现的。同时讨论了为什么有了Synchronized关键字之后还要有Lock。 我们知道Synchronized关键字是Monitor机制在Java中的一种具体实现,每个对象都有wait()、notify()和notifyA...
2019-11-12
Java
Java
Read More
Java创建线程的方式
继承Thread类 继承Thread类,重写run()方法。 1234567891011public class ExtendThread extends Thread { @Override public void run() { super.run(); System.out.println("this is sub...
2019-11-11
多线程
多线程
Read More
Java线程池
什么是线程池 线程池,和连接池、常量池一样,是一种池化思想。大概意思是预先把线程都创建好,放到一个池子里,用的时候就去拿,用完了再给下一个任务用,以达到一种资源的高效利用。 为什么要有线程池 为什么要有线程池?和这个问题相对应的一个问题是不用线程池行不行?答案是可以的。比如我们在想使用多线程的时候直接new一个Thread也是可以的,那么这两种方式有什么区别呢?每用一次new一次这样性能是很...
2019-11-07
多线程
多线程
Read More
MySQL索引篇
提到MySQL索引,都会讲到B树和B+树,今天来梳理一下。 最开始是二叉查找树,但是这种树不平衡,有时候会退化成一条链表,使得查找时间边长,于是就有了二叉平衡树。 理论上讲,二叉平衡树已经能满足一些查找需求了,为什么还要有B树呢? 因为数据库在磁盘中,而查找的时候需要读一部分数据到磁盘中,这就涉及到了IO,IO的时候是以磁盘块为单位读取的,或者说是以页为单位。我们使用树这种数据结构,一个磁盘...
2019-11-06
数据库
数据库
Read More
Spring IoC 容器的实现(一)
本文开门见山,直接讨论Spring IoC容器的初始化过程。 关于Spring容器,有一个最基本的接口,叫做BeanFacotory, 它提供了容器最基本的一些特性。所有的容器都是基于它的。还有一个较为高级一点的容器接口,叫做ApplicationContext,它在BeanFactory的基础上,又提供了其他一些高级特性,比如访问资源。 本文以ApplicationContext的一个具体...
2019-11-02
框架
框架
Read More
Spring Ioc容器实现之BeanDefinition的Resource定位
2019-11-02
Read More
Java泛型
为什么要有泛型 它的一个主要目标是将运行时才能发现的错误转移到编译期。 泛型是什么 所谓泛型,就是将类型参数化,即把类型也作为一种参数。如何做到这点呢?通过解耦类或方法与所使用的类型之间的约束。 表面使用 泛型类 1234567891011121314151617181920212223242526public class GenericsDemo <T> { p...
2019-10-31
Java
Java
Read More
Java中的finalized方法
finalize是什么 finalize()是定义在Object类中的一个方法,用于垃圾回收。 finalize原理 当JVM的GC打算回收某个对象时,如果这个对象覆盖了finalize()方法,并且finalize()方法没有被执行过,会把这个对象放在一个叫做F-Queue的队列中,稍后由一个由虚拟机自动建立的,低优先级的Finalizer线程去触发finalize的执行。稍后GC将对F-...
2019-10-27
Java
Java
Read More
Previous
6 / 9
Next