1.请简单说明一下说明是迭代器
Iterator提供了统一遍历操作集合元素的统一接口。Collection接口实现Iterable接口。
每个集合都通过实现Iterable接口中iterator()方法返回Iterator接口的实例,然后对集合的元素进行迭代操作,有一点需要注意的是:咋迭代元素的时候不能通过集合的方法删除元素,否则会抛出异常,但是可以通过Iterator接口的remove()方法进行删除。
2.如何证线程安全
通过合理的时间调度,避开共享资源的存取冲突。另外,在并行任务设计上可以通过适当的策略,保证任务上可以通过任务与任务之间不存在共享资源,设计一个规则啦保证一个客户的计算工作和数据访问只会被一个线程或一台工作机完成,而不是吧一个客户的 计算工作分配给多个线程去完成。
3。线程池
在面向对象编辑中,创建和销毁对象时很费时间的,因为创建一个对象要获取内存资源或者其它更多资源。在Java中更是如此,虚拟机将试图跟踪每一个对象,以便能够砸死对象销毁后进行垃圾回收。所以提高服务程序效率的一个手段就是尽可能减少创建和销毁后进行垃圾回收。所以提高服务程序效率一个手段就是尽可能减少和销毁对象的次数,特别是一些很耗资源的对象创建和销毁,这就是“池化资源"”技术产生的原因。线程池顾名思义就是实现创建若干可执行的线程放入一个池容器中,需要的时候从池中获取线程不用自行创建,使用完毕不需要销毁线程而是放回池中,从而减少创建和销毁线程对象的开销。
4.举例说明同步和异步
如果系统中存在临界资源,例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能被另一款各线程写过了,那么这些数据就必须进行同步存取。当应用程序在对象调用了一个需要花费很长时间来执行的额方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。事实上,所谓的同步就是指阻塞式操作,而异步就是非阻塞式操作。
5.其它线程只能访问该对象的非同步方法,同步方法则不能进入。因为非静态方法上的synchronized修饰符要求执行方法时要获取对象的锁,如果已经进入A方法说明对象锁已经被取走,那么试图进入B方法的线程就只能在等所持中等待对象的锁。
6sleep()方法给其他线程运行机会时不考虑线程的优先级,因此会给低优先级的线程运行的机会。yield()方法只会给相同优先级或更高优先级的线程以运行的机会。
7,线程池有什么优势
第一:降低资源消耗。通过重复利用已创建的线程减低线程创建和销毁早成的消耗。
第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能执行。
第三:提高线程的课管理型,线程是稀缺资源,如果无限制地创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一分配、调优和监控。
8.Java中都有哪些方式可以启动一个线程?
1.继承Thread类
2.实现Runable接口
3.即试下Runalble即可,也继承Thread类,并重写run方法。
其中使用Runable接口更好,使用实现Runalbe接口的方式创建的线程可以处理同一资源,从而实现资源的共享。
9.多线程中的i++线程安全吗?请简述一下原因
不安全,i++不是原子性操作,i++分为读取i的值,对i值加一,在赋值给i++,执行期中任何一部都是有可能被其他线程抢占的。
10.JDK和JRE的区别是什么
Java运行环境JRE是将要执行Java程序的java虚拟机。它同时也是包含执行applet需要的浏览器插件。Java开发工具包JDK是完整的Java软件开发包,包含了JRE,编译器和其他的工具(如:JavaDos,Java调试机)可以让开发者开发、编译、执行Java应用程序。
11,。什么是Java虚拟机?为什么Java被称作是与平台无关的编程语言?
java虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文件被编译成能被JAVA虚拟机执行的字节码文件。
Java被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者重新编译。Java虚拟机让这个变为可能,因为它是底层硬件平台的指令长度和其他特性。
12.请问java 中有几种类型的流。
字节流,继承于InputStream、outputStream,字符流继承于InputStreamReader、OutputStreamWriter.在java.io包中还有许多其他流。主要是为了提高性能和使用方便。
13.error和exception有什么区别
error表示恢复不是不可能但很困难的清空下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。
exception表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。
·141.super用来操作被隐藏的成员变量和方法。2.使用super调用父类的构造方法
15.开闭原则:对扩展开放,对修改关闭。
16.内部类
定义:java支持在一个类中定义另一个类,这样的类称作内部类,而包含内部类的类称为内部类的外嵌类。
之间关系:内部类的外嵌类的成员变量在内部类中仍然有效,内部类中的方法也可以调用外嵌类中的方法。
内部类的类体中不可以声明类变量和方法。外嵌类的类体中可以用内部类声明对象,作为外嵌类的成员。
内部类仅供它的外嵌类使用,其他类不可以用某个类的内部类声明对象。