2024年4月21日发(作者:)
狂翔
IT
工作室
多线程试程
一. 选择题
1.
下列说法中,正确的一项是()
A
A.
单处理机的计算机上,
2
个纯种一官半职直不能并发执行
B.
单处理机的计算机上,
2
个线程实际能够并发执行
C.
一个线程可以包含多个线程
D.
一个进程只能包含一个线程
2.
下列说法中错误的一项是()
A
A.
B.
线程是一个程序的单个执行流
线程就是程序
B.
多线程是指一个程序的多个执行流
D.
多线程用于实现并发
3.
下列哪个一个操作不能使线程从等待阻塞状态进入对象阻塞状态(
D
)
A.
等待阴塞状态下的线程被
notify()
唤
B.
等待阻塞状态下的纯种被
interrput()
中断
C.
等待时间到
D.
等待阻塞状态下的线程调用
wait()
方法
4.
下列哪个方法可以使线程从运行状态进入其他阻塞状态(
A
)
A.
sleep
5.
下列不是进程组成部分的一项是(
D
)
A.
B.
数据
C.
内核状态
D.
显示器
代码
6.
下列哪一个不属于
java
线程模型的组成部分(
D
)
A.
B.
虚拟
CPU
执行的代码
虚拟的
CPU
C.
代码所操作的数据
D.
执行流
7.
下列说法中错误的一项是(
C
)
A.
Java
中的第一个线程都属于某个线程组
B.
线程只能在其创建时设置所属的线程组
C.
线程创建之后,可以从一个线程组转移到另一个线程组
D.
新建的线程默认情况下属于其父线程所属的线程组
8.
下列不属于线程组成部分的一项是(
C
)
A.
B.
堆栈
程序计数器
C.
进程地十空间中的代码
D.
栈指针
9.
下列关于
JAVA
线程模型的说法中,错误的一项是(
A
)
A.
Java
线程模型包括计算机的
CPU B.
代码可以与其他线程共享
C.
数据可以被多个线程共享
D.
线程模型在
类中被定义
10.
下列说法中错误的一项是(
D
)
A.
一个线程是一个
Thread
类的实例
B.
线程从传递给纯种的
Runnable
实例
run()
方法开始执行
C.
线程操作的数据来自
Runnable
实例
D.
新建的线程调用
start()
方法就能立即进入运行状态
11.
下列关于
Thread
类提供的线程控制方法的说法中,错误的一项是(
D
)
A.
在线程
A
中执行线程
B
的
join()
方法,则线程
A
等待直到
B
执行完成
B.
线程
A
通过调用
interrupt()
方法来中断其阻塞状态
C.
若线程
A
调用方法
isAlive()
返回值为
true
,则说明
A
正在执行中
D.
currentThread()
方法返回当前线程的引用
12.
下列说法中,错误的一项是()
A.
对象锁在
synchronized()
语句执行完之后由持有它的线程返还
B.
对象锁在
synchronized()
语句中出现异常时由持有它的线程返还
C.
当持有锁的线程调用了该对象的
wait()
方法时,线程将释放其持有的锁
D.
当持有锁的线程调用了该对象的构造方法时,线程将释放其持有的锁
13.
下面的哪一个关键字通宵用来对对象的加锁,从而使得对对象的访问是排他的
A
A.
sirialize B transient C synchronized D static
14.
下列关于线程的说法以中,正确的一项是(
D
)
A.
由同一类创建的多个线程都同时运行结束
B.
创建线程只能通过继承
类
C.
调用
suspend
()方法暂停的一个线程将不会再被重新执行
D.
程序的执行完毕与超级线程
(daemon threads)
无关
15.
下列说法中错误的一项是(
C
)
A.
可串行化的类必须实现
Serializable
接口
B.
可串行化的类中的静态变量可以不被串行化
C.
private
数据访问权限能够限制数据不被串行化
D.
对象串行化使用
java
语言提供的默认机制
16.
下列说法中错误的一项是(
C
)
A.
可串行化的类必须实现
Serializable
接口
B.
可串行化的类中的静态变量可以不被串行化
C.
private
数据访问权限能够限制数据不被串行化
D.
对象串行化
java
语言提供的默认机制
17.
下列说法中正确的一项是(
A
)
A.
B.
代码和数据是线程的组成部分
代码和数据是进程的组成部分
C.
进程是轻型的线程
D.
线程中包括线程
18.
下列说法中错误的一项是(
C
)
的纯种体由
Thread
类的
run()
方法定义
B.
线程创建时已经确定了提供线程体的对象
C.
在程序中通过调用
Thread
类的
run()
方法创建线程对象
中每一个线程都有自己的名字
19.
下列说法中错误的一项是(
B
)
A.
共享数据的所有访问都必须使用
synchronized
加锁
B.
共享数据的访问不一定全部使用
synchronized
加锁
C.
所有的对共享数据的访问都是临界区
D.
临界区必须使用
syschronized
标识
20
.
下列有关线程的叙述中正确的一项是(
B
)
A.
一旦一个线程被创建,它就立即开始运行
B.
使用
start()
方法可以使一个线程成为可运行的,但是它不一定立即开始运行
C.
当一个线程因为抢占机制而停止运行时,它被放在可运行队列的前面
D.
一个线程可能因为不同的原因而终止并进入终止状态
二.填空题
1.
在操作系统中,被称做轻型的进程是
线程
2.
多线程程序设计的含义是可以将一个程序任务分成几个并行的
任务
3.
在
Java
程序中,
run()
方法的实现有两种方式:
实现
Runnable
接口
和
继
承
Thread
类
4.
线程的高度是指在单个
CPU
上以某种顺序运行多个
线程
5.
多个线程并发执行时,各个线程中语句的执行顺序是
确定
的,但是线程
之间的相对执行顺序是
不确定
的
中的对象锁是一种独占的
排他
锁
7.
程序中可能出现一种情况:多个纯种互相等待对方持有的锁,而在得到对方的锁
.
之前都不会释放自己的锁,这就是
死锁
8. notyfyAll()
方法将对象
wait pool
中的所有纯种都移到
lock pool
中。
9.
在一个线程中,建议使用
标志
,而不使用
stop()
方法终止另一个线程。
线程组把一组线程看做一个
对象
进行统一处理。
11.
进程是一个
内核
级的实体,而线程是一个
用户
级的实体
12.
在
Java
线程模型中的
数据
和
代码
构成了线程体。
13.
线程的优先级是在
Thread
类的常数
MIN_PRIORITY
和
MAX_PRIORITY
之间的一个值
的线程高度策略是基于
优先级
的
抢占式调度
。
15.
处于新建状态的线程可以使用的控制方法是
start()
和
stop()
。
16.
一个进程可以包含多个
线程
17.
多任务操作系统运行多个
进程
来并发地执行多个任务
18.
线程是由表示程序运行状态的
寄存器
组成的
19.
多线程允许单个程序创建多个
并行执行
的线程来完成多个子任务
类中表示最高优先级的常量是
getPriority()
,而表示最低优先级的常量
是
setPriority(0 .
三.简答题
1. 简述 synchronized 和 的异同 ?
答: 主要相同点: Lock能完成synchronized所实现的所有功能
主要不同点:Lock有比synchronized更精确的线程语义和更好的性能。synchronized会自
动释放锁,而Lock一定要求程序员手工释放,并且必须在finally从句中释放。
2.理解几个概念对象锁、sleep、wait、notify、notifyAll
对象锁:每个对象都有对象锁,当某个线程进入用synchronized定义方法时,就
获得了当前类对象(方法所属的类的对象)的锁,其他线程就不能再获得该锁,直到线程释
放该锁。一个类对象有一个对象锁,多个同步方法公用一个对象锁。
sleep:是当前线程处于休眠状态,将对cpu的控制权交给其他线程,但不释放当前对
象的锁,其他线程可以获得cpu,但不能进入当前线程控制的对象锁。
wait:与sleep的区别是,它会释放对象锁,其他线程可以进入该同步块。
notify:进入当前同步块的线程调用wait方法变成休眠状态的线程,notify将该线程
变成等待状态。
发布者:admin,转转请注明出处:http://www.yc00.com/news/1713640286a2289251.html
评论列表(0条)