一般情况下,创建线程池有以下4种方式:①.newFixedThreadPool(intnThreads)创建一个固定长度的线程池,每当提交一个任务就创建一个线程,直到达到线程池的最大数量,这时线程规模将不再变化,当线程发生未预期的错误而结束时,线程池会补充一个新的线程。②.newCachedThreadPool...
Runnable接口中的run()方法的返回值是void,它做的事情只是纯粹地去执行run()方法中的代码而已;Callable接口中的call()方法是有返回值的,是一个泛型,和Future、FutureTask配合可以用来获取异步执行的结果。
vector:就比arraylist多了个同步化机制(线程安全),因为效率较低,现在已经不太建议使用。在web应用中,特别是前台页面,往往效率(页面响应速度)是优先考虑的。statck:堆栈类,先进后出。hashtable:就比hashmap多了个线程安全。enumeration:枚举,相当于迭代器。
java常用容器的图录:
不一样,因为内存的分配方式不一样。Stringstr="i"的方式,java虚拟机会将其分配到常量池中;而Stringstr=newString("i")则会被分到堆内存中。
ArrayList和Vector在很多时候都很类似。(1)两者都是基于索引的,内部由一个数组支持。(2)两者维护插入的顺序,我们可以根据插入顺序来获取元素。(3)ArrayList和Vector的迭代器实现都是fail-fast的。(4)ArrayList和Vector两者允许null值,也可以使用索引值对元素...
Iterator可用来遍历Set和List集合,但是ListIterator只能用来遍历List。Iterator对集合只能是前向遍历,ListIterator既可以前向也可以后向。ListIterator实现了Iterator接口,并包含其他的功能。比如:增加元素,替换元素,获取前一个和后一个元素的索引等等。
不能。因为static变量在Java中是属于类的,它在所有的实例中的值是一样的。当类被Java虚拟机载入的时候,会对static变量进行初始化。如果你的代码尝试不用实例来访问非static的变量,编译器会报错,因为这些变量还没有被创建出来,还没有跟任何实例关联上。
&与&&的区别如下:&运算符有两种用法:(1)按位与,(2)逻辑与。&&运算符是短路与运算。逻辑与跟短路与的差别是非常巨大的,虽然二者都要求运算符左右两端的布尔值都是true整个表达式的值才是true。&&之所以称为短路运算是因为,如果&&...
Java支持的数据类型包括基本数据类型和引用类型。基本数据类型如下。整数值型:byte,short,int,long字符型:char浮点类型:float,double布尔型:boolean整数默认int型,小数默认是double型。Float和long类型的必须加后缀。比如floatf=100f。首先知道Str...