2022-11-03

一、TreeMap

        TreeMap map = new TreeMap();
        map.put("ff", new Date());
        map.put("aa", new Object());
        map.put("dd", new User());
        
        Set set = map.entrySet();
        
        for(Entry entry:set) {
            System.out.println(entry.getKey()+",,"+entry.getValue());
        }

二、异常

image.png

三、处理异常的方式

1、方法 throws 异常名
2、try...catch...

方法声明时有异常,调用就需要处理
程序不发生问题,只执行try中的内容
程序发生问题,该语句在try中的后续语句都不会执行,catch中的执行
问题处理好,try、catch后的语句会正常执行
问题处理不好,try、catch后的语句不会执行
一个try可以接多个catch,会从上到下依次找合适的异常类型,然后进入catch块,建议最后有个Exception兜底
用多个catch接收异常时,父异常不能位于子异常上边

四、异常堆栈信息

e.printStackTrace();

五、finally

finally不管上边try、catch执行如何,都执行,一般用于资源释放(除非系统退出,比如System.exit(),此时finally不执行)

六、手动抛出异常

throws和throw的区别
throws是处理异常的一种方式,一般写在方法声明的位置
throw是触发异常事件的推手,与异常对象连用,作为语句,写在方法内部

七、自定义异常

public class MyException extends Exception {
    public MyException(String message) {
        super(message);
    }

}

八、多线程

单核cpu,假的应用程序“同时”进行,程序互相切换,切换时间较短,让人以为应用程序“同时”进行,并发
多核cpu,真的应用程序同时进行,并行
进程:正在执行的应用程序
线程:进程中有各自独立的任务,一个任务就是一个线程
每个程序都有两个线程,其中主方法就是一个线程,另一个是垃圾回收机制
finalize

九、自定义线程

Thread
Runnable

1、继承Thread类或实现Runnable接口
2、重写run方法
3、调用start方法,启动线程

image.png

你可能感兴趣的:(2022-11-03)