BufferedReader的父类是以下哪个?
A. FilterReader
B. InputStreamReader
C. PipedReader
D. Reader
正确答案:D
下面关于Spring的说法中错误的是()
A. Spring是一个支持快速开发Java EE框架的框架
B. Spring中包含一个“依赖注入”模式的实现
C. 使用Spring可以实现声明式事务
D. Spring提供了AOP方式的日志系统
正确答案:D
Spring提供了AOP方式的日志系统
Spring并没有为我们提供日志系统,我们需要使用AOP(面向方面编程)的方式,借助Spring与日志系统log4j实现我们自己的日志系统。
java如何返回request范围内存在的对象?
A. request.getRequestURL()
B. request.getAttribute()
C. request.getParameter()
D. request.getWriter()
正确答案:B
request.getAttribute()方法返回request范围内存在的对象,而request.getParameter()方法是获取http提交过来的数据。getAttribute是返回对象,getParameter返回字符串。
关于volatile关键字,下列描述不正确的是?
A. 用volatile修饰的变量,每次更新对其他线程都是立即可见的。
B. 对volatile变量的操作是原子性的。
C. 对volatile变量的操作不会造成阻塞。
D. 不依赖其他锁机制,多线程环境下的计数器可用volatile实现。
正确答案:BD
一旦一个共享变量(类的成员变量、类的静态成员变量)被volatile修饰之后,那么就具备了两层语义:
1)保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。
2)禁止进行指令重排序。
volatile只提供了保证访问该变量时,每次都是从内存中读取最新值,并不会使用寄存器缓存该值——每次都会从内存中读取。
而对该变量的修改,volatile并不提供原子性的保证。
由于及时更新,很可能导致另一线程访问最新变量值,无法跳出循环的情况
多线程下计数器必须使用锁保护。