1,ArrayList和Vector的区别,HashMap和Hashtable的区别
答:就ArrayList和Vector主要从2方面说,
一,同步性:Vector是线程安全的,也就是同步的,而ArrayList是线程不安全的,不是同步的;
二,数据增长:当需要增长时,Vector默认增长为原来的一倍,而ArrayList为原来的一半;
就HashMap与HashTable主要从3方面说,
一,历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java1.2引进的Map接口的一个实现;
二,同步性:Hashtable是线程安全的,也就是同步的,而hashMap是线程不安全的,不是同步的
三,只有HashMap可以将空值作为一个表单key或者value
2,public class OuterClass{
private double d1 = 1.0;
//insert code here
}
you need to insert an inner class declaration at line 3. which two inner class declartions are valid(choose two.)
A. class InnerOne{
public static double methoda(){return d1;}
}
B. public class InnerOnew{
static double methoda(){return d1;}
}
C. private class InnerOne{
double methoda(){return d1;}
}
D. static class InnerOne{
protected double methoda(){return d1;}
}
E. abstract class InnerOne{
public abstract double methoda();
}
说明如下:
一,静态内部类可以有静态成员,而非静态内部类不能有静态成员。故A,B错
二,静态内部类的非静态成员可以访问外部类的静态变量,而不可以访问外部类的非静态变量:return d1错。故D错
三,非静态内部类的非静态成员可以访问外部类的非静态变量。故C正确
四,答案为C,E。
3,多线程有几种实现方法?都是什么?同步有几种实现方法,都是什么?
答:多线程有2种实现方法,分别是继承Thread类和实现Runnable接口
同步有2种,一个是synchronized,另一个是wait与notify。
4. sleep() 和 wait() 有什么区别 ?
答: sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。
wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。