二十七、什么是BIO、NIO、AIO?
BIO(Blocking I/O):同步阻塞I/O,是JDK1.4之前的传统IO模型。线程发起IO请求后,一直阻塞,直到缓冲区数据就绪后,再进入下一步操作。
NIO(Non-Blocking I/O):同步非阻塞I/O,线程发起I/O请求后,不需要阻塞,立即返回。用户线程不原地等待IO缓冲区,可以先做一些其它操作,只需要定时轮询检查IO缓冲区数据是否就绪即可。
AIO(Asynchronous I/O):异步非阻塞I/O,线程发起I/O请求后,不需要阻塞,立即返回,也不需要定时轮询检查结果,异步IO操作之后会回调通知调用方。
二十八、SimpleDateFormat是线程安全的吗?
SimpleDateFormat是非线程安全的,因为SimpleDateFormat的format()方法在执行过程中,会使用一个成员变量Calendar来保存时间。
如果我们在声明SimpleDateFormat的时候,使用的是static定义的。那么这个SimpleDateFormat就是一个共享变量,随之,SimpleDateFormat中的Calendar也就可以被多个线程访问到。
假设线程1刚刚执行完calendar.setTi