各地
资讯
当前位置: 考呗网 > 教师资格 > 面试指导 >

面试内容(最新发布)(6)

蚂蚁考呗网     [ 2020-09-06 ]   点击次数:

(10)JSP有哪些内置对象?作用分别是什么?
JSP有9个内置对象:
- request:封装客户端的请求,其中包含来自GET或POST请求的参数;
- response:封装服务器对客户端的响应;
- pageContext:通过该对象可以获取其他对象;
- session:封装用户会话的对象;
- application:封装服务器运行环境的对象;
- out:输出服务器响应的输出流对象;
- config:Web应用的配置对象;
- page:JSP页面本身(相当于Java程序中的this);
- exception:封装页面抛出异常的对象。

(11)线程池的使用
引入线程池的原因:

由于线程的生命周期中包括,创建-就绪-运行-阻塞-挂机-结束 阶段,当我们处理的任务数目比较小的时候,我们可以自己创建几个线程来处理相应的任务,但是有大量的任务时,由于创建和销毁线程都需要很大的开销,运用线程池就可以大大的缓解这些内存开销很大的问题。 线程池的使用: Executor类给我们提供了的静态方法,就可以创建相应的线程池: [java] view plain copy <span>public static executorService newSigleExecutor(); public static executorService newFixedThredPool(); public static executorService newCachedThreadPool();</span> newSignalExecutor()返回一个包含单线程的Executor,将多个任务交给Executor时,这个线程处理完一个任务后会接着处理下一个任务,若该线程出现异常,将会有一个新的线程来替代它 newFixedThreadPool()返回一个包含指定数目线程数的线程池,如果任务数量多于线程数目的话,那么没有执行的任务必须等待,直到任务完成为止 newCachedThreadPool()根据用户的任务数目创建相应的线程来处理,该线程池不会对线程的数目加以限制,完全依赖于虚拟机能创建的线程输入,但是可能会引起内存不足。 我们只需要将执行的任务放入run方法中即可,将runable接口的实现类交给线程池的execute方法,作为它的一个参数

(12)tomacat,jvm优化

(13)线程并发问题:valitile:加了volatile修饰符的变量则是直接读写主存。
一旦一个共享变量(类的成员变量、类的静态成员变量)被valitile修饰之后,那么就具备了两层语义:
1)保证了不同线程对这个变量进行操作是的可见性,即一个线程修改了某个变量的的,新的值对其它线程来说是立即可见的。
2)禁止进行指令重排序。 指令重排是指处理器为了提高程序运行效率,可能会对输入代码进行优化,它不保证各个语句的执行顺序同代码中的顺序一致,但是它会保证程序最终执行结果和代码顺序执行的结果是一致的。指令重排序不会影响单个线程的执行,但是会影响到线程并发执行的正确性。程序执行到volatile修饰变量的读操作或者写操作时,在其前面的操作肯定已经完成,且结果已经对后面的操作可见,在其后面的操作肯定还没有进行。

volitile本质实在告诉jvm当前变量在寄存器(工作内存)中的值是不确定的,需要从主存中读取; synchronized则是锁定当前变量,只有当前线程可以访问该变量,其他线程被阻塞住。 1)volatile仅能使用在变量级别; synchronized则可以使用在变量、方法、和类级别 2)volatile仅能实现变量的修改可见性,并不能保证原子性; synchronized则可以保证变量的修改可见性和原子性 3)volatile不会造成线程的阻塞; synchronized则可能会造成线程的阻塞 4)volatile标记的变量不会被编译器优化; synchronized标记的变量可以被编译器优化
评论责编::admin
相关推荐
热点推荐»