Java高级题库v14讲解Word文档下载推荐.docx
《Java高级题库v14讲解Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《Java高级题库v14讲解Word文档下载推荐.docx(161页珍藏版)》请在冰点文库上搜索。
![Java高级题库v14讲解Word文档下载推荐.docx](https://file1.bingdoc.com/fileroot1/2023-5/9/1d82cf38-f6f1-49e4-9de1-d6cf658ac870/1d82cf38-f6f1-49e4-9de1-d6cf658ac8701.gif)
下面那个是反射的关键字?
(A)
A.ReflectionB.Thread
C.InterfaceD.Collection
9
Reflectiond的起源是?
(B)
A.ObjectB.Class
C.FieldD.Method
10
反射机制的优点就是可以实现动态创建对象和编译,体现出很大的灵活性(对)
11
动态获取类的信息,以及动态调用对象的方法的功能来自于线程(错)
1.1.1了解反射概述
12
java的反射机制导入的是java.util包内(错)
13
何谓反射机制?
根据网文,java中的反射机制可以如此定义:
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;
对于任意一个对象,都能够调用它的任意一个方法;
这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
14
在反射中,newInstance()方法的作用的是:
(AD)
A.创建对象
B.声明对象
C.初始化对象
D.开辟内存空间
1.1.4使用反射分析对象(属性,方法,构造器调用)
15
newInstance()的创建对象时,要调用对象的无参构造器。
16
如果对象没有无参构造器,newInstance()方法是不能使用的。
第二单元类加载和反射
(二)
题型
难度
第节课内容知识点
类加载过程中经历那些阶段?
类从被加载到虚拟机内存中开始,直到卸载出内存为止,它的整个生命周期包括了:
加载、验证、准备、解析、初始化、使用和卸载
这7个阶段
七
▲▲▲▲
2.1.2类加载过程
类在加载过程中,虚拟机需要做那些事情?
1、
通过一个类的全限定名来获取定义此类的二进制字节流。
2、
将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。
3、
在Java堆中生成一个代表这个类的java.lang.Class对象,作为方法区这些数据的访问入口。
▲▲▲
类的验证阶段主要分几步?
文件格式验证、元数据验证、字节码验证和符号引用验证。
▲▲
4
代码分析题,请说出类加载过程?
classSingleTon{privatestaticSingleTonsingleTon=newSingleTon();
publicstaticintcount1;
publicstaticintcount2=0;
privateSingleTon(){count1++;
count2++;
}
publicstaticSingleTongetInstance(){returnsingleTon;
}
publicclassTest{publicstaticvoidmain(String[]args){SingleTonsingleTon=SingleTon.getInstance();
System.out.println("
count1="
+singleTon.count1);
count2="
+singleTon.count2);
答:
1:
SingleTonsingleTon=SingleTon.getInstance();
调用了类的SingleTon调用了类的静态方法,触发类的初始化
2:
类加载的时候在准备过程中为类的静态变量分配内存并初始化默认值singleton=nullcount1=0,count2=0
3:
类初始化化,为类的静态变量赋值和执行静态代码快。
singleton赋值为newSingleTon()调用类的构造方法
4:
调用类的构造方法后count=1;
count2=1
5:
继续为count1与count2赋值,此时count1没有赋值操作,所有count1为1,但是count2执行赋值操作就变为0
八
▲▲▲▲▲
5、
Java虚拟机中有几种类加载器?
BootStrap,ExtClassLoader,AppClassLoader
2.1.4加载器
第三单元多线程
(一)
下列说法中错误的一项是(A)
A.线程就是程序
B.线程是一个程序的单个执行流
C.多线程是指一个程序的多个执行流
D.多线程用于实现并发
二
▲
3.1.1了解线程和进程
下列说法中正确的是(BCD)
B.线程是一个程序的单个执行流
C.多线程是指一个程序的多个执行流
三
用(currentThread())可以得到主线程。
//返回对当前正在执行的线程对象的引用。
(Thread)
一
3.2线程的创建和启动
通过继承Runnable类或实现Thread接口都能创建多线程类(×
四
一个进程可以同时包含多个线程(√)
多线程程序设计的含义是可以将一个程序任务分成几个并行的线程
程序开发者必须创建一个线程去管理内存的分配。
(×
)
C和Java都是多线程语言。
(错)
3.1线程概述
线程间调用涉及的开销比进程间通信多(错)
掌握创建线程的两种方式,正确的是:
(AB)
A.实现Runnable接口B.继承Thread类
C.继承Runnable类D.实现Thread接口
线程是操作系统中一个程序及其数据在处理机上顺序执行时所发生的活动。
下列说法中正确的是(ABC)
A.一个线程是一个Thread类的实例
B.线程从传递给纯种的Runnable实例run()方法开始执行
C.线程操作的数据来自Runnable实例
D.新建的线程调用start()方法就能立即进入运行状态
在线程的Thread对象上调用start()方法,而不是run()或者别的方法。
多进程在操作系统中同时运行多个任务(程序)。
多线程在同一应用程序中有多个顺序流同时执行。
实现线程体的方式除了继承Thread类,还可以实现(B)接口。
A、Cloneable
B、Runnable
C、Iterable
D、Serializable
17
创建线程的方式有哪些?
线程的入口方法是?
启动线程的方法是
答案:
继承Thread实现Runnable,入口是run启动方法是start。
18
下列关于线程的说法以中,正确的一项是(ABC)
A.由同一类创建的多个线程都同时运行结束
B.创建线程只能通过继承java.lang.Thread类
C.调用suspend()方法暂停的一个线程将不会再被重新执行
D.程序的执行完毕与超级线程(daemonthreads)无关
19
下列说法中错误的一项是(D)
A.一个线程是一个Thread类的实例
B.线程从传递给纯种的Runnable实例run()方法开始执行
C.线程操作的数据来自Runnable实例
D.新建的线程调用start()方法就能立即进入运行状态
20
编译运行下面的代码会发生什么?
D
publicclassBgroundextendsThread{
publicstaticvoidmain(Stringargv[])
{
Bgroundb=newBground();
b.run();
publicvoidstart()
for(inti=0;
i<
10;
i++){
Valueofi="
+i);
}}}
A.编译错误,Thread类中的run方法没有定义
B.运行时错误,Thread类中的run方法没有定义
C.编译无错,打印0到9.
D.编译无错,不打印任何值
21
下列方法中可以用来创建一个新线程的是(BC)
A、实现java.lang.Runnable接口并重写start()方法
B、实现java.lang.Runnable接口并重写run()方法
C、继承java.lang.Thread类并重写run()方法
D、实现java.lang.Thread类并重写start()方法
22
在Java程序中,run()方法的实现有两种方式:
实现(Runnable)接口和继承(Thread)类。
23
启动一个线程是用run()还是start()?
答:
启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。
这并不意味着线程就会立即运行。
run()方法可以产生必须退出的标志来停止一个线程。
六
24
能够创建线程的方法,以下说法正确的是(D)
A.继承Runnable
B.实现Thread
C.实例化Runnalbe
D.没有正确答案
25
关于线程的启动是通过哪个方法来实现的(A)
A.start()B.join()C.Sleep()D.currentThread()
26
第四单元多线程
(二)
下列说法中错误的项有(BD)
A.
一个类继承Thread类,该类的实例就是一个线程对象
B.通过调用run方法启动一个线程
C.通过调用start方法启动一个线程
4.1掌握线程的生命周期
开启线程需要使用的方法是:
(B)
A.sleep()B.start()C.run()D.stop()
以下属于多线程生命周期的是:
(ABCD)
A.开始B.就绪C.运行D.结束
以下关于多线程说法正确的是:
(ABCD)
A.线程都可以设置名字,也可以获取线程的名字,连主线程也不例外。
B.获取当前线程的对象的方法是:
Thread.currentThread();
C.当线程目标run()方法结束时该线程完成。
D.线程的调度是JVM的一部分,在一个CPU的机器上,实际上一次只能运行一个线程。
一次只有一个线程栈执行。
java线程的基本状态和阻塞状态都有哪些?
新建,就绪,阻塞,运行态,死亡
Thread类里面,等待该线程终止的方法是(C)
A.getName()B.setName(true)C.join()D.run()
4.2控制线程
关于sleep方法,下面描述不正确的是(A)
A.Sleep方法指让线程结束运行。
B.Sleep方法指定的毫秒数内让当前正在执行的线程休眠(暂停执行),
C.Sleep(1000):
是指让线程休眠1000毫秒
D.当前运行的线程休眠,其他线程可以照常运行。
(错)
线程的休眠方法是(A)
A.sleep
B.wait
C.yield
D.start
以下哪个方法可以让正在执行的线程暂停一段时间,并进入阻塞状态不需要其它线程唤醒它(A)
A.sleep
B.wait
C.Notify
D.run
下列哪个方法可以使线程从运行状态进入阻塞状态(A)
A.sleepB.wait
C.yieldD.start
下列哪个一个操作不能使线程从等待阻塞状态进入对象阻塞状态(D)
A.等待阴塞状态下的线程notify()唤
B.等待阻塞状态下的纯种被interrput()中断
C.等待时间到
D.等待阻塞状态下的线程调用wait()方法
线程的执行可通过使用(sleep())方法来暂时中止。
在睡眠后,线程将进入就绪状态
当调用一个正在进行线程的stop()方法时,该线程便会进入休眠状态。
(错)
Java语言中提供了一个▁d▁线程,自动回收动态分配的内存。
A异步
B消费者
C守护
D垃圾收集
4.2.2了解什么是后台线程(DaemonThread)
主线程结束时守护线程立即结束(y)
线程间调用涉及的开销比进程间通信多(n)
关于多线程,下列说法正确的是:
(ABC)
A.Run()是执行方法,start()是启动方法。
B.之所以出现线程,就是为了更好的利用CPU,让她更加“精明”的干活。
C.start()在执行时调用的是run方法体。
D.调用start()方法线程立马运行。
下列关于Thread类提供的线程控制方法的说法中,错误的一项是(D)
A.在线程A中执行线程B的join()方法,则线程A等待直到B执行完成
B.线程A通过调用interrupt()方法来中断其阻塞状态
C.若线程A调用方法isAlive()返回值为true,则说明A正在执行中
D.currentThread()方法返回当前线程的引用
▁b▁方法使对象等待队列的第一个线程进入就绪状态。
Arun
Bnotify
Cyield
Dsleep
方法resume()负责重新开始▁d▁线程的执行。
A被stop()方法停止
B被sleep()方法停止
C被wait()方法停止
D被suspend()方法停止
下面哪个能直接导致一个线程停止执行?
(ABD)
A.调用yield()方法
B.在一个对象上调用wait()方法
C.在一个对象上调用notify()方法
D.在一个对象上调用Interrupt()方法
下列哪些方法不可以使线程从运行状态进入其他阻塞状态(BCD)
A.sleepB.wait
C.yieldD.start
处于新建状态的线程可以使用的控制方法是(start())和(stop())
一个线程在调用它的start方法,之前,该线程将一直处于出生期。
(对)
如果线程的run方法执行结束或抛出一个不能捕获的例外,线程便进入等待状态。
27
如果线程死亡,它便不能运行。
28
线程的生命周期是一个线程从创建到执行完的整个过程。
29
下列关于Thread类提供的线程控制方法的说法中,错误的一项是(C)
A.在线程A中执行线程B的join()方法,则线程A等待直到B执行完成
B.线程A通过调用interrupt()方法来中断其阻塞状态
C.若线程A调用方法isAlive()返回值为true,则说明A正在执行中
30
以下代码的调试结果为?
(D)
publicclassBgroundextendsThread{
publicstaticvoidmain(Stringargv[]){
}
publicvoidstart(){
i++){
}}}
A.编译错误,没有定义线程的run方法;
B.由于没有定义线程的run方法,而出现运行错误;
C.编译通过,运行输出values0to9
D.编译通过,运行无输出
31
下列关于线程优先级的说法中,正确的是(AC)
A、线程的优先级是可以改变的
B、线程的优先级是在创建线程时设置的
C、在创建线程后的任何时候都可以设置
D、B和C
32
下列哪个方法可以使当前运行的线程回到可运行的状态,让具有相同优先级的线程获得运行的机会,也就是线程的让步。
(C)
A.Join()B.Sleep()C.yield()D.interrupt()
33
线程的优先级是在Thread类的常数(MIN_PRIORITY)和(MAX_PRIORITY)之间的一个值
34
在Java中,高优先级的可运行线程会抢占低优先级线程。
35
线程可以用yield方法使低优先级的线程运行。
36
一个线程可以调用yield方法使其他线程有机会运行。
(对)
37
用▁b▁方法可以改变线程的优先级。
BsetPrority
38
线程通过▁c▁方法可以使具有相同优先级线程获得处理器。
Arun
39
A.Join()B.Sleep()C.yield()D.interrupt()
第五单元多线程(三)
同步是用于确保资源一次只能被一个线程使用的过程(y)
5.1线程同步
synchronized关键字不可以用于修饰方法。
(n)
使用synchronized来实现线程的同步,但是也会产生(A)的问题。
A.线程的死锁B.线程的睡眠C.线程的启动D.线程的运行
(错)
同步是用于确保资源一次只能被一个线程使用的过程(对)
同步和异步有何异同,在什么情况下分别使用他们?
举例说明。
如果数据将在线程间共享。
例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这