- 博客(11)
- 资源 (18)
- 收藏
- 关注
原创 单例模式--静态内部类和静态代码块实现单例的区别
静态资源不是一开始就存在于内存中的。 我们来看一个例子,静态资源不是一开始就存在于内存中的。class A{ private A(){ System.out.println("A被初始化了"); } private static A a = new A();} 我们创建了一个类A,我们并没有使用这个类,在控制台,也不会输出:“A初...
2018-07-28 17:00:01 2023
原创 高并发--卷6--线程组、异常处理
为了更好的管理线程,JAVA中引入了线程组,我们将相同类型的线程放到线程组中。 new Thread(Thread,Runnable);引例public class T{ public static void main(String[] args) throws InterruptedException { ThreadGroup tg = ne...
2018-07-28 16:58:40 139
原创 单例模式的三种写法
DCLpublic class T{ private volatile static T t = null; private T(){} static{ if(t == null){ synchronized (T.class) { if(t == null){ ...
2018-07-24 18:51:03 118
原创 高并发--卷5--任务调度:Timer计时器
在多线程技术中,用的较多的就是Timer计时器了,它本身不是Runnable的实现类,计划任务用另一个TimerTask类来实现。 应用场景:比如在报表统计中常常需要使用任务调度来更新报表库 。Timer.schedule(TimerTask,Date) 我们用Timer的schedule方法来设置一个任务,Date为任务的执行时间。Timer.schedule(Time...
2018-07-23 16:46:06 569
原创 高并发--卷4--读写锁
ReentrantLock锁的互斥性决定了同一时间内lock()下只能有一个线程在执行。 但是对于读和读的情况,却没必要让两个线程互斥,对于读写,写读,写写需要进行互斥,所以,JDK中提出了一种读写锁的机制,ReentrantReadWriteLock()读读 读读不会互斥。import java.util.concurrent.locks.ReentrantRea...
2018-07-22 14:39:28 168
原创 高并发--卷4--ReentrantLock扩展的API
前面介绍了基本的Condition.await(),Condition.signal(),Condition.signalAll(),Lock.lock(),Lock.unlock()等方法的使用,这里再介绍一些新的API。在线程池的设计中会起到一些作用。ReentrantLock.getHoldCount()获取当前Lock下lock()次数 该方法能获取到当前Lock调用了...
2018-07-20 00:46:28 301
原创 高并发--卷4--Lock的使用
在前面的几卷,主要介绍了使用synchronized关键字实现线程的同步,这一讲,我们介绍一种非java虚拟机自身提供的关键字,而是用ReentranLock类来实现,它在jdk1.5中被提出,用来解决synchronized解决不了的一些问题。比如使用synchronized关键字和wait和notifyAll的时候,notifyAll唤醒的是所有于synchronized锁对应的线程,这...
2018-07-19 22:55:28 175
原创 高并发--卷3--ThreadLocal
在java并发编程中,经常用到ThreadLocal来保存一个变量的值,而且,不同线程直接存放的数据具有隔离性。ThreadLocal-set(T)/get() 通过set(T)和get()进行存值和取值,不同线程之间具有隔离性。public class T{ public static ThreadLocal<String> t
2018-07-11 21:45:46 146
原创 高并发--卷2--有序性--volatile
例子 来看一个例子:public class T{ public static boolean flag = true; public static int i = 0; public static void main(String[] args) throws InterruptedException { new Thread(new Myt...
2018-07-11 15:41:55 183
原创 quotient filter解读
我们称quotient filter为商过滤器,与布鲁姆过滤器不同的是,商过滤器采用一个哈希函数,具有更高的查找效率,它将关键字key经过一次哈希运算后,得到q_hash,然后将q_hash/2^r作为商,r=q_hash%2^r作为余数。我们构造一个记录器,它由3*2*r个bit组成,每3个bit对应给槽,那么总共就有2^r个槽,每个槽中存放r余数。当插入一个元素的时候,先计算出商和余数,...
2018-07-10 16:08:57 1778
原创 高并发--卷3--线程间的通信
线程进行通信有很多办法,我们可以使用一个全局变量,让两个线程对该变量进行状态的监听,但是这种方法,需要用循环来进行监听,比较占用资源。如果看了前面的卷1-卷2,那么你可能也看到了,通过interrupt()和currentThread.isInterrupted()来真正停止一个线程,或者你也看到了,suspend()和resume()实现线程的阻塞和线程的继续运行,这些都是线程进行通信的例...
2018-07-10 13:29:36 121
windows install clean up
2019-03-27
hadoop-eclipse-plugin-2.6.0.jar
2019-03-17
jdbc_mysql.jar
2016-10-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人