一、谈谈你对多线程的理解?
1、多线程的优缺点
优点:
1)提升界面的响应速度,利用了异步的思想
2)有效的利用资源,提升cpu利用率
缺点:
线程数量过大的时候,线程间切换会占用大量资源,影响性能;可以通过线程池控制线程总数,来达到优化性能的目的
2、线程的生命周期
创建-就绪-运行-死亡-阻塞
3、线程创建的三种方式
1)继承Thread类,实现run方法,优点是有start方法,缺点是java是单继承的
2)实现Runnable接口,实现run方法,优点是规避了java的单继承机制,缺点是没有start方法,需要用Thread类的start方法去启动
3)实现Callable接口,实现call方法,call方法有返回值,可以抛出异常,可以配合future使用
4、线程池
1)Executors提供的默认线程池,有缓存线程池、固定重用数量线程池、单线程线程池等。。
2)自定义线程池,实例化ThreadPoolExecutor类,设定初试线程数、最大线程数、持续时间、缓存队列等参数
5、线程间通信
1)锁机制
2)轮询可见信号量
3)wait、notify
4)管道通信
6、多线程常用的设计模式
1)Future
2)Master-Worker
3)生产者-消费者
二、谈谈对io流的理解
1、主要分为输入流和输出流,又可以分为字节流和字符流
2、字节流继承了inputstream类,字符流继承自Reader
3、其中特殊的是inputstreamReader,他继承自Reader,属于字符流,但其参数为字节流,所以能够实现字节流转字符流,并且该类还可以设置字符编码
BufferedReader提供了readline方法。