我个人认为线程池是多线程的一种优化方案,他解决了我们通过创建Thread类或者其子类的对象来创建多线程的方式可能遇到的一些问题,程序中的一个线程从创建到消亡过程中在时间上的消耗可以分为三部分,一是创建线程用的时间,二是运行代码所用的时间,三是线程消亡所用的时间,这三部分时间中,如果一个线程在创建和消亡上边用了较多的的时间的话,这样就会使得程序的执行效率降低,还有就是当我们需要同时创建很多线程时,可能会大量占用内存,这样就会使程序变的很卡,降低程序的执行速度。线程池的出现很好的解决了这个问题,它将线程创建于程序执行初期,在程序较为空闲时消亡一部分进程,或是在程序终结时消亡线程,它大大降低了线程在创建和消亡上消耗的时间,还有就是线程池在创建的时候会指定线程池中的最大线程数,这样就避免了因为线程太多而大量占据内存的情况。
至于动态代理就是在程序运行时,由Java虚拟机动态生成一个代理类,它的出现是为了给我们在想要实现的接口中的方法加上一些系统功能,具体是通过反射机制来实现,在面试中,老师还有可能会问到创建动态代理的三种方式,这个也需要好好理解一下,在张孝祥老师的Java高新技术视频中有演示。 |