09 2017 档案
摘要:数字在JVM中的表示 一、整数在JVM中的表示 1.在Java虚拟机中,整数有四种表示: byte:8位 short:16位 int:32位 long:64位 2.原码、补码、反码 1)原码:符号位(左边第一位,0表示正数,1表示负数)加上数字的二进制表示。 2)反码:在原码的基础上,符号位不变,其
阅读全文
摘要:锁的性能优化 一、优化注意事件 一)减少锁的持有时间 只在必要时进行同步,能明显减少锁的持有时间。 二)锁的细化 缺陷:当系统需要全局锁时,其消耗的资源会比较多。 三)锁的分离 比如读写分离锁 四)锁的粗化 如果对同一个锁不断地进行请求,同步和释放,这些操作本身就会占用大量的系统资源。 锁的粗化可以
阅读全文
摘要:设计模式与并发之生产者-消费者模式 生产者-消费者模式是一个经典的多线程设计模式。它为多线程间的协作提供了良好的解决方案。在生产者-消费者模式中,通常由两类线程,即若干个生产者线程和若干个消费者线程。生产者线程负责提交用户请求,消费者线程则负责具体处理生产者提交的任务。生产者和消费者之间则通过共享内
阅读全文
摘要:设计模式与并发之Future模式 核心思想:异步调用。
阅读全文
摘要:设计模式与并发之不变模式 使用不变模式的目的:除去多线程中的同步操作,提高并行程序的性能。 一个类在的内部状态创建后,在整个生命周期内都不会发生改变,该类就是不变类。 JDK中的不变类; java.lang.String java.lang.Boolean java.lang.Byte j
阅读全文
摘要:设计模式与并发之单例模式 简单的单例实现; 缺点:何时产生实例,不好控制。 延迟加载,需要instance才去创建: 缺点:并发条件下加锁,影响性能。 利用静态内部类实现单例,客服以上两种方法的缺陷:
阅读全文
摘要:Log4j教程 一、快速上手 log4j把日志分为:all,trace,debug,info,warnig,error,fital,off等几个级别。级别高的会屏蔽级别的的信息。 1)maven导入jar包 2)classpath下的配置文件log4j2.xml 3)java文件 16:03:59.
阅读全文
摘要:无锁 一、概述 无锁是处理并发的一种乐观策略,它会假设对资源的访问是没有冲突的。既然没有冲突自然不需要等待,所以所有的线程都可以在不停顿的状态下执行。那遇到冲突怎么办?接下来请看,无锁绝招“CAS”即比较交换术。 二、CAS原理 CAS即Compare and swap.其算法过程是这样的:它有三个
阅读全文
摘要:线程复用:线程池 一、为什么需要线程池 为了避免系统频繁地创建和销毁线程,使用线程池让线程进行复用。(即创建线程变成了从线程池中获取空闲线程,销毁线程变成了把线程放回线程池中。) 二、JDK对线程池的支持:Executor框架 一)Excutor框架简介 注意:任务本身不能抛出异常,不然后续所有执行
阅读全文
摘要:JDK并发包之同步控制 一、重入锁 重入锁使用java.util.concurrent.locks.ReentrantLock来实现。示例代码如下: 对于synchronized来说,如果一个线程在等待锁,那么结果只有两种情况,要么它获得这把锁继续执行,要么继续等待锁。而对于使用重入锁的线程来说则不
阅读全文

浙公网安备 33010602011771号