java面试题复习(六)

5一、实现多线程的方法java

一种是继承Thread类;另外一种是实现Runnable接口。两种方式都要经过重写run()方法来定义线程的行为,推荐使用后者,由于Java中的继承是单继承,一个类有一个父类,若是继承了Thread类就没法再继承其余类了,显然使用Runnable接口更为灵活。5之后还有Callable接口,该接口的call方法在线程结束时产生一个返回值。web

5二、举例说明同步和异步
答:若是系统中存在临界资源(资源数量少于竞争资源的线程数量的资源),例如正在写的数据之后可能被另外一个线程读到,或者正在读的数据可能已经被另外一个线程写过了,那么这些数据就必须进行同步存取(数据库操做中的排他锁就是最好的例子)。当应用程序在对象上调用了一个须要花费很长时间来执行的方法,而且不但愿让程序等待方法的返回时,就应该使用异步编程,在不少状况下采用异步途径每每更有效率。事实上,所谓的同步就是指阻塞式操做,而异步就是非阻塞式操做。数据库

5三、启动一个线程是调用run()仍是start()方法编程

启动一个线程是调用start()方法,使线程所表明的虚拟处理机处于可运行状态,这意味着它能够由JVM 调度并执行,这并不意味着线程就会当即运行。run()方法是线程启动后要进行回调的方法。安全

5四、线程池和其余池的做用网络

在面向对象编程中,建立和销毁对象是很费时间的,由于建立一个对象要获取内存资源或者其它更多资源。在Java中更是如此,虚拟机将试图跟踪每个对象,以便可以在对象销毁后进行垃圾回收。因此提升服务程序效率的一个手段就是尽量减小建立和销毁对象的次数,特别是一些很耗资源的对象建立和销毁,这就是”池化资源”技术产生的缘由。线程池顾名思义就是事先建立若干个可执行的线程放入一个池(容器)中,须要的时候从池中获取线程不用自行建立,使用完毕不须要销毁线程而是放回池中,从而减小建立和销毁线程对象的开销。多线程

5五、线程的运行状态及他们的关系框架

5六、简述synchronized 和lock()的异同异步

lock具备synchronzed的所有功能,但lock比synchronized有更好的线程安全和语义synchronized会自动释放锁,而lock必须手动释放锁,并且必须在finally内释放。snchronized是jvm级别的,而lock是类级别的。在synchronized若是A线程得到锁,b线程会一直等待,在lock状况下,b能够尝试得到锁。snchronized没法判断锁状态,lock能够判断。lock用于大量同步,二synchronized用于少许同步。jvm

5七、Java中如何实现序列化,有什么意义
序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。能够对流化后的对象进行读写操做,也可将流化后的对象传输于网络之间。序列化是为了解决对象流读写操做时可能引起的问题(若是不进行序列化可能会存在数据乱序的问题)。
要实现序列化,须要让一个类实现Serializable接口,该接口是一个标识性接口,标注该类对象是可被序列化的,而后使用一个输出流来构造一个对象输出流并经过writeObject(Object)方法就能够将实现对象写出(即保存其状态);若是须要反序列化则能够用一个输入流创建对象输入流,而后经过readObject方法从流中读取对象。序列化除了可以实现对象的持久化以外,还可以用于对象的深度克隆

5八、Java中有几种类型的流
字节流和字符流。字节流继承于InputStream、OutputStream,字符流继承于Reader、Writer。输出流输入流

5九、 XML文档定义有几种形式,它们之间有何本质区别,解析XML文档有哪几种方式
XML文档定义分为DTD和Schema两种形式,两者都是对XML语法的约束,其本质区别在于Schema自己也是一个XML文件,能够被XML解析器解析,并且能够为XML承载的数据定义类型,约束能力较之DTD更强大。对XML的解析主要有DOM、SAX和StAX

60、你在项目中哪些地方用到了XML

XML的主要做用有两个方面:数据交换和信息配置。在作数据交换时,XML将数据用标签组装成起来,而后压缩打包加密后经过网络传送给接收者,接收解密与解压缩后再从XML文件中还原相关信息进行处理;配置web.xml信息和java框架的配置信息

相关文章
相关标签/搜索