文本描述
1、多线程有几种实现方法 ?同步有几种实现方法? 多线程有两种实现方法,分别是继承Thread类与实现Runnable接口。同步的实现方面有两 种,分别是synchronized,wait与notify。 a. wait():使一个线程处于等待状态,并且释放所持有的对象的lock。 b. sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉 InterruptedException异常。 c.notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的 唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且不是按优先级。 d.allnotity():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁, 而是让它们竞争。 2、 JDBC中的 PreparedStatement相比 Statement的好处? 预编译语句java.sql.PreparedStatement ,扩展自Statement,不但具有Statement的所有能 力而且具有更强大的功能。不同的是,PreparedStatement是在创建语句对象的同时给出要 执行的sql语句。这样,sql语句就会被系统进行预编译,执行的速度会有所增加, 尤其是在执行大语句的时候,效果更加理想 3、 Java中实现多态的机制是什么 ? 重写,重载 方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是 父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果 在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写(Overriding)。子 类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽” 了。果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型, 则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。 4、说出 ArrayList,Vector, LinkedList的存储性能和特性 ArrayList和 Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数 据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及 数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了 synchronized方法(线程安全),通常性能上较 ArrayList差,而 LinkedList使用双 向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只 需要记录本项的前后项即可,所以插入速度较快。 5、 Collection和 Collections的区别。 Collection是集合类的上级接口,继承与他的接口主要有 Set和 List。Collections 是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排 序、线程安全化等操作。 6、 HashMap和 Hashtable的区别。 HashMap是 Hashtable的轻量级实现(非线程安全的实现),他们都完成了 Map 接口,主要区别在于 HashMap允许空(null)键值(key),由于非线程安全,效 率上可能高于 Hashtable。 HashMap允许将 null作为一个 entry的 key或者 value,而 Hashtable不允许。 HashMap把 Hashtable的 contains方法去掉了,改成 containsvalue和 contain