随笔分类 - java性能
java性能
摘要:前言1,资料 1. 学习开源项目的启动脚本是个不错的主意,比如ElasticSearch家的,Cassandra家的, 附送一篇解释它的文章。 2. VJTools的 jvm-options.sh,伸手党们最爱,根据自己需要稍微定制一下就行。 3. JVM调优的"标准参数"的各种陷阱 ,R大的文章,
阅读全文
摘要:1,不变性 当满足以下条件时,对象才是不可变的: - 对象创建以后其状态就不可修改 - 对象的所有域都是 final 类型 - 对象是正确创建的(在对象的构造期间,this 引用没有逸出) 从技术上来看,不可变对象并不需要将其所有的域都声明为 final 类型,例如 String 就是这种情况,这就
阅读全文
摘要:在并发编程中,我们通常会用到一组非阻塞的模型:Promise,Future(同步的)和Callback(回调,异步的,回调有很多好处,比如不占用cpu,没有线程中断之类的破事)。其中的Future表示一个可能还没有实际完成的异步任务的结果,针对这个结果可以添加Callback以便在任务执行成功或失败
阅读全文
摘要:JVM JIT编译器优化技术有近100中,其中最最重要的方式就是内联(inlining)。方法内联可以省掉方法栈帧的创建,方法内联还使让JIT编译器更多更深入的优化变成可能。本人在fastxml(速度比XPP3(基于xmlpull)还快的xml解析器)开源项目中针对方法内联进行了很多学习和实践,这里
阅读全文
摘要:1,定义线程对象Callable:Callable可以看成是一个增强版的Runnable, 带返回结果, 需要通过Future或者FutureTask来提交任务或运行线程, 然后通过Future/FutureTask的get方法得到返回结果. Callable在子线程中运行, 在主线程中通过Futu
阅读全文
摘要:Java中最常用的线程池技术就是ThreadPoolExecutor。接下来就整体看看ThreadPoolExecutor的实现。 这个类的注解非常多,很多也是重点,所以就不从注解开始看起。先从使用说起,有个概念先。 基本使用 // 核心线程 int corePoolSize = 5; // 最大线
阅读全文
摘要:(一)、示例: public class ThreadPoolDemo3 { public static void main(String[] args) { ExecutorService executorService = Executors.newFixedThreadPool(4); for
阅读全文
摘要:① 高并发、任务执行时间短的业务,线程池线程数可以设置为CPU核数+1,减少线程上下文的切换。 ② 并发不高、任务执行时间长的业务要区分开看: 假如是业务时间长集中在I/O操作上,也就是I/O密集型的任务,因为I/O操作并不占用CPU,所以不要让所有的CPU闲下来,可以加大线程池中的线程数目,让CP
阅读全文
摘要:/** * 把省的字符串转换成列表 * * @param province * @return */ private List getProvinceList(String province) { List result = new ArrayList(); if (StringUtils.isEmpty...
阅读全文
摘要:Sole purpose of using concurrency is to produce scalable and faster program. But always remember, speed comes after correctness. Your Java program mus
阅读全文
摘要:1、ConcurrentHashMap是Java 5中支持高并发、高吞吐量的线程安全HashMap实现,既兼顾安全,又保证高并发,HashMap的升级版本,建议使用。 2、List中的三种循环方法:迭代循环、for-each循环、for循环,其中for循环效率最高,迭代循环其次,这下你应该知道选择哪
阅读全文
摘要:测试条件: 循环次数:1千万次 元素个数:1000个 测试结果: 总结:ArrayList获取元素非常快,不过添加元素没有Vector快,两者各有优势,Vector是线程安全的,而ArrayList是线程不安全的。
阅读全文