● 实现一个文件拷贝功能时,我们使用字节流还是字符流?
我们拷贝的文件时候,不确定文件是只包含字符流,有可能字节流(图片、声音、图像等),为了考虑到通用性,要使用字节流。
● 说说你对Servlet的理解?
Servlet(Server Applet),全称Java Servlet,是用Java编写的服务器端程序,而这些程序都要实现Servlet这个接口。其主要功能在于交互式的浏览和修改数据,生成动态的web内容,并且Servlet运行于支持Java的应用服务器中。
● 有没有使用过线程并发库?
java.util.concurrent包提供了对线程优化、管理的各项操作。该包提供了线程的运行、线程池的创建、线程生命周期的控制。Java通过executors提供4个静态方法创建线程池。
newCachedThreadPool创建一个可以缓存线程池,如果线程长度超过处理需要,可以灵活回收空闲线程。若无可回收,则创建线程。
newFixedThreadPool创建一个定长线程池。可以控制线程最大并发,超出线程会在队列中等待。
newScheduledThreadPool创建一个定长的线程池,支持定时及周期性任务执行。
newSingleThreadExecutor创建一个单例化的线程池,它只会唯一的工作线程来执行任务,保证所有任务按照指定的顺序执行。
● 线程池的作用?
(1) 限定线程的个数,不会导致由于线程过多而导致系统运行缓慢或崩溃。
(2) 线程池不需要每次去创建或销毁,响应时间更快以及节约了资源。
● 讲一讲线程的几种创建方式?
-
(1) 通过继承Thread类实现一个线程。
-
(2) 通过实现Runnable接口实现一个线程。
注意:继承的扩展性不强,java总只支持单继承,如果一个类继承了Thread就不能继承其他的类了