共 29 页: 上一页 1 2 3 4 5 6 下一页 末页
摘要:最简单的东西,往往包含了最复杂的实现,因为需要为上层的存在提供一个稳定的基础,Object作为java中所有对象的基类,其存在的价值不言而喻,其中wait和notify方法的实现多线程协作提供了保证。 public class WaitNotifyCase { public static void 阅读全文
posted @ 2018-07-13 11:31 draem0507 阅读 (108) 评论 (0) 编辑
摘要:讲到高性能IO绕不开Reactor模式,它是大多数IO相关组件如Netty、Redis在使用的IO模式,为什么需要这种模式,它是如何设计来解决高性能并发的呢? 最最原始的网络编程思路就是服务器用一个while循环,不断监听端口是否有新的套接字连接,如果有,那么就调用一个处理函数处理,类似:while 阅读全文
posted @ 2018-07-13 10:43 draem0507 阅读 (34) 评论 (0) 编辑
摘要:前言 线程是稀缺资源,如果被无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,合理的使用线程池对线程进行统一分配、调优和监控,有以下好处: 1、降低资源消耗; 2、提高响应速度; 3、提高线程的可管理性。 Java1.5中引入的Executor框架把任务的提交和执行进行解耦,只需要定义好任务, 阅读全文
posted @ 2018-07-13 10:29 draem0507 阅读 (35) 评论 (0) 编辑
摘要:在TOMCAT WEB程序的运行过程中,突然触发了内存溢出错误,检查Tomcat的localhost日志,找到如下信息: 1 2 3 4 5 6 7 8 9 10 11 按照提示,找到代码进行检阅: 1 2 3 4 看了好几遍,没有发现明显的异常,既没有全局变量,也没有属性变量,没理由出现内存溢出, 阅读全文
posted @ 2018-07-13 01:17 draem0507 阅读 (52) 评论 (0) 编辑
摘要:通过jstack可快速检查线程的死锁信息,用法如下: 1 2 3 4 5 翻到页底,可发现明显的死锁信息: 1 2 3 4 5 6 7 8 9 10 11 12 13 从输出信息中,可明显发觉两个线程彼此锁定了对方需要的锁(0x000000076c636568与0x000000076c5806f8) 阅读全文
posted @ 2018-07-13 01:09 draem0507 阅读 (67) 评论 (0) 编辑
摘要:之前做过一个测试,详情见这篇文章《多线程 +1操作的几种实现方式,及效率对比》,当时对这个测试结果很疑惑,反复执行过多次,发现结果是一样的: 1. 单线程下synchronized效率最高(当时感觉它的效率应该是最差才对); 2. AtomicInteger效率最不稳定,不同并发情况下表现不一样:短 阅读全文
posted @ 2018-07-13 01:02 draem0507 阅读 (41) 评论 (0) 编辑
摘要:在高并发模型中,无是面对物理机SMP系统模型,还是面对像JVM的虚拟机多线程并发内存模型,指令重排(编译器、运行时)和内存屏障都是非常重要的概念,因此,搞清楚这些概念和原理很重要。否则,你很难搞清楚哪些操作是在并发先绝对安全的?哪些是相对安全的?哪些并发同步手段性能最低?valotile的二层语义分 阅读全文
posted @ 2018-07-12 23:33 draem0507 阅读 (54) 评论 (0) 编辑
摘要:一、synchronized的实现方案 1.synchronized能够把任何一个非null对象当成锁,实现由两种方式: a.当synchronized作用于非静态方法时,锁住的是当前对象的事例,当synchronized作用于静态方法时,锁住的是class实例,又因为Class的相关数据存储在永久 阅读全文
posted @ 2018-07-12 22:49 draem0507 阅读 (73) 评论 (0) 编辑
摘要:一、什么是序列化? “对象序列化”(Object Serialization)是 Java1.1就开始有的特性。 简单地说,就是可以将一个对象(标志对象的类型)及其状态转换为字节码,保存起来(可以保存在数据库,内存,文件等),然后可以在适当的时候再将其状态恢复(也就是反序列化)。serializat 阅读全文
posted @ 2018-07-12 21:15 draem0507 阅读 (28) 评论 (0) 编辑
摘要:一、retentionpolicy.class vs runtime区别 java5,增加了注解的功能;其中retentionpolicy注解的生命周期,提供了三种选择策略 source、class和runtime三种选择; source:源码级别的,主要是方便程序上查看;它的生命周期是编译后,就消 阅读全文
posted @ 2018-06-21 11:46 draem0507 阅读 (72) 评论 (0) 编辑
共 29 页: 上一页 1 2 3 4 5 6 下一页 末页
View Code