一 Java中间件的定义
“软件胶水” 应用与应用间的桥梁 应用与服务间的桥梁
远程过程调用和对象访问中间件:主要解决分布式环境下 应用的互相访问(应用服务化的基础)
消息中间件:解决应用之间的消息传递、解耦、异步的问题
数据访问中间件:解决应用访问数据库的共性问题
二 构建中间件基础知识
1 JVM
Java源码由编译器写成Java字节码 能在不同操作系统上运行
2 垃圾回收机制
新生代 年老代 持久代
3 Java并发编程
线程池:降低创建线程的开销
主要使用ThreadPoolExecutor
定时线程池:ScheduledThreadPoolExecutor
Synchronized关键字:方法 代码块
对象 类
ReentrantLock关键字:公平锁 非公平锁(synchronized)
读写锁:ReentrantReadWriteLock(读不需要互斥)
需要unlock,避免死锁 线程间通信:Condition await signal
volatile关键字 :变量存取从线程工作内存到主内存
可见性与互斥不同
Atomics关键字
wait notify notifyAll:定义在Object上的对象,都需要拿到对象的锁
wait/notify使当前代码所在线程等待/就绪
CountDownLatch:并发包中的类,给定达到某个数量,线程被唤醒
latch.countDown执行,代码依旧继续执行
latch.await
CyclicBarrier:并发包中的类,给定达到某个数量,线程唤醒
barrier.await,代码暂停
Semaphore
Exchanger
Future与FutureTask:Future<HashMap> future = getDatafromRemote();
//do something
HashMap data = future.ge();
并发容器:看JDK源码
4 动态代理
代理:静态代理(手动实现每个代理类,麻烦)
动态代理:JDK动态代理(只为接口) CGclib(可以为类)
5 反射
获取对象属于哪个类
获取类的信息
构建对象
动态执行方法
动态操作属性
6 网络通信
MINA NETTY