摘要: 1. Callable与Runable区别 Java从发布的第一个版本开始就可以很方便地编写多线程的应用程序,并在设计中引入异步处理。Thread类、Runnable接口和Java内存管理模型使得多线程编程简单直接。 但Thread类和Runnable接口都不允许声明检查型异常,也不能定义返回值。没 阅读全文
posted @ 2017-12-17 02:45 危常焕 阅读(262) 评论(0) 推荐(0) 编辑
摘要: 我们已经知道,synchronized 是Java的关键字,是Java的内置特性,在JVM层面实现了对临界资源的同步互斥访问,但 synchronized 粒度有些大,在处理实际问题时存在诸多局限性,比如响应中断等。Lock 提供了比 synchronized更广泛的锁操作,它能以更优雅的方式处理线 阅读全文
posted @ 2017-12-17 01:24 危常焕 阅读(4814) 评论(0) 推荐(0) 编辑
摘要: Executor线程池框架 new Thread()的缺点 每次new Thread()耗费性能 调用new Thread()创建的线程缺乏管理,被称为野线程,而且可以无限制创建,之间相互竞争,会导致过多占用系统资源导致系统瘫痪。 不利于扩展,比如如定时执行、定期执行、线程中断 采用线程池的优点 重 阅读全文
posted @ 2017-12-17 01:16 危常焕 阅读(197) 评论(0) 推荐(0) 编辑
摘要: 第一步:pom依赖 <!-- 单元测试 --> <dependency> <groupId>org.unitils</groupId> <artifactId>unitils-core</artifactId> <version>3.4.2</version> </dependency> <depe 阅读全文
posted @ 2017-12-17 00:34 危常焕 阅读(409) 评论(0) 推荐(0) 编辑
摘要: log4j框架logger的继承关系以及使用场景 log4j日志框架logger是存在继承关系的,我们一般都会在log4j.properties文件中定义log4j.rootLogger。其他所有logger都继承自这个rootLooger。考虑下面这种场景:假如我们有2个类HelloLog4j和A 阅读全文
posted @ 2017-12-17 00:09 危常焕 阅读(1427) 评论(0) 推荐(0) 编辑
摘要: log4j 父logger和子logger 定义子logger其目的就是能够在某一范围内(某一个class或者某一个package)下面,日志的输出方式与其他地方的日志输出方式不同。 log4j.properties [java] <strong><span style="font-size:14p 阅读全文
posted @ 2017-12-17 00:06 危常焕 阅读(2988) 评论(0) 推荐(0) 编辑