java 容易被遗忘的点

xiaoxiao2025-02-15  25

最近看了些设计模式,发现自己在一些java点上存在疏忽,整理整理: [color=red]1、Proxy和InvocationHandler[/color] 在java中动态代理用到的类,实现代理效果 Proxy.newProxyInstance的3个参数说明: 根据传入的第二个参数interfaces动态生成一个类$Proxy0,该类实现interfaces中的接口; 第一个参数classloder将刚生成的$Proxy0类加载到jvm中 第三个参数,调用$Proxy0的构造函数 创建$Proxy0的对象 代理可以应用到aop、spring中的事物管理等; [color=red]2、Observable类 和Observer接口[/color] # import java.util.Observable; # import java.util.Observer; 主要方法包括:Observable类的setChanged()、notifyObservers()、addObserver(); Observer的public void update(Observable o, Object arg); [color=red]3、ExecutorService和Executors[/color] java用来执行并发操作的工具类 [color=red]4、SoftReference 和weakreference[/color] 做缓存和gc处理用。 [color=red]5、守候进程[/color] final static long N=100000; public void run(){ try{ System.out.println("测试 Finally 会不被执行"); for(long i=0;i<N;i++){long a=i+1; System.out.println("a====="+a); } } finally{ System.out.println("Finally 被执行"); } } public static void main(String[] args){ Thread f = new Thread(new Finally()); f.setDaemon(true); f.start(); } finally方法不一定执行,因为finally为守候进程,当主程序结束时,没有非守候进程的话,jvm将停止。 [color=red]6、finally执行测试[/color] System.out.print("测试finally单纯修改返回值"); int i = 1; try { return i; } finally { i = i + 10; } 返回的i为1; [color=red]6、ThreadLocal的用法[/color] 确保在多线程,各个线程获得自己的对象,ThreadLocal。set(),ThreadLocal。get(); 可以用来在各个dao中保存connection连接。
转载请注明原文地址: https://www.6miu.com/read-5024791.html

最新回复(0)