多线程练习题卷

合集下载

Java多线程习题

Java多线程习题
C、Java.1ang.ThreadD、java.1ang.Runnable
9、下列说法中错误的一项是( )。
A、Applet必须全部重写其生命周期方法
B、Applet不必全部重写其生命周期方法
C、Applet中使用了线程,则需要重写相应的生命周期方法
D、stop()总是在destroy()之前被调用。
B、用于建立与某个数据源的连接可采用DriverManager类的getConnection方法
C、建立数据库连接时,必须要进行异常处理
D JDBC中查询语句的执行方法必须采用Statement类实现
12、运行下列程序,会产生什么结果()
public class X extends Thread implements Runable{ public void run(){
18•实现线程体的方式除了继承Thread类,还可以实现接口。
E)A、Cloneable B、Runnable C、Iterable D、Serializable二、填空题
1、 若在高优先级线程的run()方法中调用_____方法,则该线程将让出CPU使其他 —
的线程获得CPU的使用权。
2、 通过实现Runnable接口创建线程的过程是:将实现Runnable的一个亠作为
Java
知识点:
Java的多线程,实现多线程的两种方法,线程控制、调度方法
一、选择题
1、什么原因可导致线程停止执行。 ( )
A.线程调用了wait()方法;
B.线程调用了yield()方法;
C.线程调用了pause()方法;
D.线程调用了sleep()方法。
2、 哪个方法是实现Runnable接口所需的?
13、下面哪个方法可以在任何时候被任何线程调用? ()

java多线程练习题(打印版)

java多线程练习题(打印版)

java多线程练习题(打印版)### Java多线程练习题#### 题目一:实现一个简单的线程编写一个Java程序,创建一个线程,该线程打印出从1到10的数字。

```javapublic class SimpleThread extends Thread {public void run() {for (int i = 1; i <= 10; i++) {System.out.println(i);}}public static void main(String[] args) {SimpleThread thread = new SimpleThread();thread.start();}}```#### 题目二:线程同步编写一个Java程序,创建两个线程,它们交替打印字符串"A"和"B",直到每个线程打印5次。

```javapublic class ThreadSync {private static final Object lock = new Object();public static void main(String[] args) {Thread threadA = new Thread(() -> {for (int i = 0; i < 5; i++) {synchronized (lock) {System.out.print("A");lock.notify();try {lock.wait();} catch (InterruptedException e) { e.printStackTrace();}}}});Thread threadB = new Thread(() -> {for (int i = 0; i < 5; i++) {synchronized (lock) {System.out.print("B");lock.notify();try {lock.wait();} catch (InterruptedException e) { e.printStackTrace();}}}});threadA.start();threadB.start();}}```#### 题目三:生产者-消费者问题编写一个Java程序,模拟生产者-消费者问题。

多线程常见面试题及答案

多线程常见面试题及答案

多线程常见⾯试题及答案1、如何在Java中实现线程(4种)?1.继承Thread类,重写run⽅法(其实Thread类本⾝也实现了Runnable接⼝)2.实现Runnable接⼝,重写run⽅法3.实现Callable接⼝,重写call⽅法(有返回值)4.使⽤线程池(有返回值)2、在具体多线程编程实践中,如何选⽤Runnable还是Thread?Java中实现多线程有两种⽅法:继承Thread类、实现Runnable接⼝,在程序开发中只要是多线程,肯定永远以实现Runnable接⼝为主,因为实现Runnable接⼝相⽐继承Thread类有如下优势:1、可以避免由于Java的单继承特性⽽带来的局限;2、增强程序的健壮性,代码能够被多个线程共享,代码与数据是独⽴的;适合多个相同程序代码的线程区处理同⼀资源的情况。

3、Thread类中的start()和run()⽅法有什么区别?start()⽅法来启动线程,真正实现了多线程运⾏,这时⽆需等待run⽅法体代码执⾏完毕⽽直接继续执⾏下⾯的代码:通过调⽤Thread类的start()⽅法来启动⼀个线程,这时此线程是处于就绪状态,并没有运⾏。

然后通过此Thread类调⽤⽅法run()来完成其运⾏操作的,这⾥⽅法run()称为线程体,它包含了要执⾏的这个线程的内容,Run⽅法运⾏结束,此线程终⽌,⽽CPU再运⾏其它线程。

run()⽅法当作普通⽅法的⽅式调⽤,程序还是要顺序执⾏,还是要等待run⽅法体执⾏完毕后才可继续执⾏下⾯的代码:⽽如果直接⽤run⽅法,这只是调⽤⼀个⽅法⽽已,程序中依然只有主线程–这⼀个线程,其程序执⾏路径还是只有⼀条,这样就没有达到多线程的⽬的。

4、Java中Runnable和Callable有什么不同相同点:1. 两者都是接⼝;(废话)2. 两者都可⽤来编写多线程程序;3. 两者都需要调⽤Thread.start()启动线程;不同点:1. 两者最⼤的不同点是:实现Callable接⼝的任务线程能返回执⾏结果;⽽实现Runnable接⼝的任务线程不能返回结果;2. Callable接⼝的call()⽅法允许抛出异常;⽽Runnable接⼝的run()⽅法的异常只能在内部消化,不能继续上抛;注意点:Callable接⼝⽀持返回执⾏结果,此时需要调⽤FutureTask.get()⽅法实现,此⽅法会阻塞主线程直到获取‘将来’结果;当不调⽤此⽅法时,主线程不会阻塞!5、如何避免死锁?1. 加锁顺序按照顺序加锁是⼀种有效的死锁预防机制。

Android——多线程编程练习题

Android——多线程编程练习题

Android——多线程编程练习题随便选择两个城市作为预选旅游⽬标。

实现两个独⽴的线程分别显⽰10次城市名,每次显⽰后休眠⼀段随机时间(1000ms以内),哪个先显⽰完毕,就决定去哪个城市。

分别⽤Runnable接⼝和Thread类实现。

layout⽂件:1<?xml version="1.0" encoding="utf-8"?>2<LinearLayout xmlns:android="/apk/res/android"3 xmlns:tools="/tools"4 android:layout_width="match_parent"5 android:layout_height="match_parent"6 android:paddingBottom="@dimen/activity_vertical_margin"7 android:paddingLeft="@dimen/activity_horizontal_margin"8 android:paddingRight="@dimen/activity_horizontal_margin"9 android:paddingTop="@dimen/activity_vertical_margin"10 tools:context="com.hanqi.testapp2.PractiseActivity4"11 android:orientation="vertical">1213<TextView14android:layout_width="match_parent"15 android:layout_height="wrap_content"16 android:id="@+id/tvw1"/>17<TextView18android:layout_width="match_parent"19 android:layout_height="wrap_content"20 android:id="@+id/tvw2"/>2122<Button23android:layout_width="wrap_content"24 android:layout_height="wrap_content"25 android:id="@+id/btt1"26 android:text="随机选择"27 android:onClick="btn_onClick"/>28</LinearLayout>java类:1package com.hanqi.testapp2;23import android.os.Bundle;4import android.support.v7.app.AppCompatActivity;5import android.view.View;6import android.widget.Button;7import android.widget.TextView;8import android.widget.Toast;910public class PractiseActivity4 extends AppCompatActivity {1112 TextView tvw1;13 Button btt1;14 TextView tvw2;15 @Override16protected void onCreate(Bundle savedInstanceState) {17super.onCreate(savedInstanceState);18 setContentView(yout.activity_practise4);19 tvw1 = (TextView)findViewById(w1);20 btt1 = (Button)findViewById(R.id.btt1);21 tvw2 = (TextView)findViewById(w2);22 }23 String c1 = "北京";24 String c2 = "上海";25public void btn_onClick(View v)26 {27//创建⼦线程128new Thread(){29 @Override30public void run() {31for (int i=0;i<20;i++)32 {33if(i%2==0)34 {35 c1="";36 }37else38 {39 c1="北京";40 }41 runOnUiThread(new Runnable() {42 @Override43public void run() {44 tvw1.setText(c1);45 }46 });47//暂停48try {49 Thread.sleep((int) (Math.random()*1000));50 }51catch (Exception e)52 {5354 }55 }56 runOnUiThread(new Runnable() {57 @Override58public void run() {59 Toast.makeText(PractiseActivity4.this, c1 + "循环完成", Toast.LENGTH_SHORT).show();60 }61 });62 }63 }.start();64//创建⼦线程265new Thread(){66 @Override67public void run() {68for (int i=0;i<20;i++)69 {70if(i%2==0)71 {72 c2="";73 }74else75 {76 c2="上海";77 }78 runOnUiThread(new Runnable() {79 @Override80public void run() {81 tvw2.setText(c2);82 }83 });84//暂停85try {86 Thread.sleep((int) (Math.random()*1000));87 }88catch (Exception e)89 {9091 }92 }93 runOnUiThread(new Runnable() {94 @Override95public void run() {96 Toast.makeText(PractiseActivity4.this, c2 + "循环完成", Toast.LENGTH_SHORT).show();97 }98 });99 }100 }.start();101 }102103 }随便选择两个城市作为预选旅游⽬标。

多线程面试题c++ 4个线程设计问题

多线程面试题c++ 4个线程设计问题

多线程面试题c++ 4个线程设计问题
1.题目:子线程循环 10 次,接着主线程循环 100 次,接着又回到子线程循环 10 次,接着再回到主线程又循环 100 次,如此循环50次,试写出代码子线程与主线程必有一个满足条件(flag == num),不满足条件的那个线程不可能获取unique_lock(会在wait中释放),只有满足条件的线程才能获取锁,执行程序
2.题目:编写一个程序,开启3个线程,这3个线程的ID分别为A、
B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推。

3.题目(google笔试题):有四个线程1、2、3、4。

线程1的功能就是输出1,线程2的功能就是输出2,以此类推.........现在有四个文件ABCD。

初始都为空。

现要让四个文件呈如下格式:
A:1 2 3 4 1 2....
B:2 3 4 1 2 3....
C:3 4 1 2 3 4....
D:4 1 2 3 4 1....
4.题目:有一个写者很多读者,多个读者可以同时读文件,但写者在写文件时不允许有读者在读文件,同样有读者读时写者也不能写。

5.题目:编写程序完成如下功能:
1)有一int型全局变量g_Flag初始值为0
2)在主线称中起动线程1,打印“this is thread1”,并将g_Flag 设置为1
3)在主线称中启动线程2,打印“this is thread2”,并将g_Flag 设置为2
4)线程序1需要在线程2退出后才能退出
5)主线程在检测到g_Flag从1变为2,或者从2变为1的时候退出。

java 多线程 编程题

java 多线程 编程题

java 多线程编程题
好的,以下是一个简单的Java 多线程编程题目:
题目:实现一个线程安全的计数器,当多个线程同时对计数器进行加1 操作时,计数器能够正确地累加计数。

要求:
1.计数器的初始值为0。

2.当多个线程同时对计数器进行加1 操作时,计数器能够正确地累加计数,保证计数
值的正确性。

3.使用synchronized 关键字保证计数器的线程安全性。

示例代码:
java
public class Counter {
private int count = 0;
public synchronized void increment() {
count++;
}
public synchronized int getCount() {
return count;
}
}
在这个示例代码中,我们定义了一个名为Counter 的类,它包含一个名为count 的整型变量和一个名为increment 的方法。

increment 方法用于将count 变量的值加1,并使用synchronized 关键字保证其线程安全性。

我们还定义了一个名为getCount 的方法,它也使用了synchronized 关键字来保证线程安全性,用于返回当前的计数值。

多线程试卷参考答案

考试参考答案一、单项选择题(从下列各题四个备选答案中选出一个正确答案,并将其代号写在答题纸相应位置处。

答案错选或未选者,该题不得分。

)1. D2. D3. B4. A5.A6. B7. A8. B9. B10.C11.D 12.A 13.D 14.A 15.C16.D 17.D 18.A 19.C 20.C21.C 22.C 23.B 24.A 25.C26. A 27. A 28. C29. B30.D31. A 32. D 33. D 34. C35.C36.C 37.A 38.C 39.C 40.C41.A 42.B 43.B 44.C 45.A46.B 47.B 48.C 49.B 50.C二、填空题1. ng.Thread2. 并发3.抢先调度4. stop()5. 死亡6. Thread7.可运行状态8.线程体9.返回线程的字符串信息10.用户11.寄存器12.虚拟的CPU 代码数据13.MAX_PRIORITY MIN_PRIORITY14.getPrority() setPrority()15.syschronized16.可运行状态阻塞状态17.封锁18.代码一组寄存器19.相互独立20.wait( )方法三、判断题(判断以下论述的正误,认为正确的就在答题相应位置划“T”,错误的划“F”)1. F2. T3. F4. F5. T6. T7. F8. T9.T 10. T11. F 12. T 13. T 14. F 15. T16. F 17. T 18. F 19.T 20. F四、简答题(回答要点,并简明扼要作解释)1. 答:线程是一段完成某个特定功能的代码,是程序中单个顺序的流控制。

但和进程不同的是,同类的多个线程是共享一块内存空间和一组系统资源,而进程本身的数据通常只有微处理器的寄存器数据,以及一个供程序执行时使用的堆栈。

2. 答:线程从创建、运行到销往的过程称为线程的生命周期。

java多线程测试试题

java多线程试题————————————————————————————————作者:————————————————————————————————日期:狂翔IT工作室多线程试程一.选择题1.下列说法中,正确的一项是() AA.单处理机的计算机上,2个纯种一官半职直不能并发执行B.单处理机的计算机上,2个线程实际能够并发执行C.一个线程可以包含多个线程D.一个进程只能包含一个线程2.下列说法中错误的一项是()AA.线程就是程序B.线程是一个程序的单个执行流B.多线程是指一个程序的多个执行流D.多线程用于实现并发3.下列哪个一个操作不能使线程从等待阻塞状态进入对象阻塞状态(D)A.等待阴塞状态下的线程被notify()唤B.等待阻塞状态下的纯种被interrput()中断C.等待时间到D.等待阻塞状态下的线程调用wait()方法4.下列哪个方法可以使线程从运行状态进入其他阻塞状态(A)A.sleepB.waitC.yieldD.start5.下列不是进程组成部分的一项是(D)A.代码B.数据C.内核状态D.显示器6.下列哪一个不属于java线程模型的组成部分(D)A.虚拟的CPUB.虚拟CPU执行的代码C. 代码所操作的数据D.执行流7.下列说法中错误的一项是(C)A.Java中的第一个线程都属于某个线程组B.线程只能在其创建时设置所属的线程组C.线程创建之后,可以从一个线程组转移到另一个线程组D.新建的线程默认情况下属于其父线程所属的线程组8.下列不属于线程组成部分的一项是(C)A.程序计数器B.堆栈C. 进程地十空间中的代码D.栈指针9.下列关于JA V A线程模型的说法中,错误的一项是(A)A.Java线程模型包括计算机的CPUB.代码可以与其他线程共享C. 数据可以被多个线程共享D.线程模型在ng.Thread类中被定义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.下面的哪一个关键字通宵用来对对象的加锁,从而使得对对象的访问是排他的 AA.sirialize B transient C synchronized D static14.下列关于线程的说法以中,正确的一项是(D)A.由同一类创建的多个线程都同时运行结束B.创建线程只能通过继承ng.Thread类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)A.java的纯种体由Thread类的run()方法定义B.线程创建时已经确定了提供线程体的对象C.在程序中通过调用Thread类的run()方法创建线程对象D.java中每一个线程都有自己的名字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.多个线程并发执行时,各个线程中语句的执行顺序是确定的,但是线程之间的相对执行顺序是不确定的6.Java中的对象锁是一种独占的排他锁7.程序中可能出现一种情况:多个纯种互相等待对方持有的锁,而在得到对方的锁之前都不会释放自己的锁,这就是死锁.8. notyfyAll() 方法将对象wait pool中的所有纯种都移到lock pool中。

java多线程练习题

java多线程练习题Java多线程编程练习题[]选择题1.编写线程类,要继承的父类是:A:ObjectB:RunnableC:SerializableD:ThreadE:E某ception答2.编写线程类,可以通过实现那个接口来实现?A:RunnableB:ThrowableC:SerializableE:Cloneable答:3.什么方法用于终止一个线程的运行?A:leepB:joinC:waitD:topE:notify答:4.一个线程通过什么方法将处理器让给另一个优先级别相同的线程?A:waitB:yieldC:joinD:leepE:top答:5.如果要一个线程等待一段时间后再恢复执行此线程,需要调用什么方法?A:waitB:yieldC:joinD:leepE:topF:notify答:6.什么方法使等待队列中的第一个线程进入就绪状态?A:waitB:yieldC:joinD:leepE:topF:notify答:7.Runnable接口定义了如下哪些方法?A:tart()B:top()C:reume()D:run()E:upend()答:8.如下代码创建一个新线程并启动线程:Runnabletarget=newMyRunnable();ThreadmyThread=newThread(target);问:如下哪些类可以创建target对象,并能编译正确?A:publicclaMyRunnablee某tendRunnable{publicvoidrun(){}} B:publicclaMyRunnablee某tendObject{publicvoidrun(){}}C:publicclaMyRunnableimplementRunnable{publicvoidrun(){}} D:publicclaMyRunnablee某tendRunnable{voidrun(){}}E:publicclaMyRunnableimplementRunnable{voidrun(){}}答:9.给出代码如下:publicclaMyRunnableimplementRunnable{publicvoidrun(){--------------------------------}}问在虚线处,如下哪些代码可以创建并启动线程?A:newRunnable(MyRunnable).tart();B:newThread(MyRunnable).run();C:newThread(newMyRunnable()).tart();D:newMyRunnable().tart();答:[]问答题1.线程和进程有什么区别?2.Java创建线程的方式有哪些?[]编程题1.编写多线程应用程序,模拟多个人通过一个山洞的模拟。

Java第七单元练习题Java多线程机制(20210109223217)

7 Java 多线程机制7.1 单项选择题1. 线程调用了sleep ()方法后,该线程将进入( )状态。

A. 可运行状态B. 运行状态C. 阻塞状态D. 终止状态2. 关于java 线程,下面说法错误的是()A. 线程是以CPU为主体的行为B. java 利用线程使整个系统成为异步C. 创建线程的方法有两种:实现Runnable 接口和继承Thread 类D. 新线程一旦被创建,它将自动开始运行3. 在java 中的线程模型包含()A. 一个虚拟处理器B. CPU执行的代码C. 代码操作的数据D. 以上都是4. 在java 语言中,临界区可以是一个语句块,或者是一个方法,并用()关键字标识。

A. synchronizedB. includeC. importD. Thread5. 线程控制方法中,yield()的作用是()A. 返回当前线程的引用B. 使比其低的优先级线程执行C. 强行终止线程D. 只让给同优先级线程运行6. 线程同步中,对象的锁在()情况下持有线程返回A. 当synchronized()语句块执行完后B. 当在synchronized()语句块执行中出现例外( exception )时C. 当持有锁的线程调用该对象的wait()方法时D. 以上都是7. 在以下()情况下,线程就进入可运行状态A. 线程调用了sleep()方法时B. 线程调用了join()方法时C. 线程调用了yield()方法时D. 以上都是8. java 用()机制实现了进程之间的异步执行A. 监视器B. 虚拟机C. 多个CPUD. 异步调用9. Thread 类的方法中,toString() 方法的作用是()A. 只返回线程的名称B. 返回当前线程所属的线程组的名称C. 返回当前线程对象D. 返回线程的名称10. J ava 语言具有许多优点和特点,下列选项中,哪个反映了Java 程序并行机制的特点( )A. 安全性B. 多线程C. 跨平台D. 可移值11. 以下哪个关键字可以用来对对象加互斥锁()A. transientB. synchronizedC. serializeD. static12. 下面关于进程、线程的说法不正确的是( )。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

多线程一、单项选择题(从下列各题四个备选答案中选出一个正确答案,并将其代号写在答题纸相应位置处。

答案错选或未选者,该题不得分。

)501.下述哪个选项为真?( )A.Error类是一个RoutimeException异常B.任何抛出一个RoutimeException异常的语句必须包含在try块之内C.任何抛出一个Error对象的语句必须包含在try块之内D. 任何抛出一个Exception异常的语句必须包含在try块之内2.下列关于Java线程的说法哪些是正确的?( )A.每一个Java线程可以看成由代码、一个真实的CPU以及数据3部分组成B.创建线程的两种方法,从Thread类中继承的创建方式可以防止出现多父类问题C.Thread类属于java.util程序包D.以上说法无一正确3.哪个关键字可以对对象加互斥锁?( )A.transientB.synchronizedC.serializeD.static4.下列哪个方法可用于创建一个可运行的类?()A.public class X implements Runable { public void run() {……} }B. public class X implements Thread { public void run() {……} }C. public class X implements Thread { public int ru n() {……} }D.public class X implements Runable { protected void run() {……} }5.下面哪个选项不会直接引起线程停止执行?( )A.从一个同步语句块中退出来B.调用一个对象的wait方法C.调用一个输入流对象的read方法D.调用一个线程对象的setPriority方法6.使当前线程进入阻塞状态,直到被唤醒的方法是( )A.resume()方法B.wait()方法C.suspend()方法D.notify()方法7.运行下列程序,会产生的结果是( )public class X extends Thread implements Runnable {public void run(){System.out.println(“this is run()”);}public static void main(String[] args){Thread t=new Thread(new X());t.start();}}A.第一行会发生编译错误B. 第六行会发生编译错误C.第六行会发生运行错误D.程序会运行和启动ng.ThreadGroup类的作用为( )A.使任何类都可以为线程提供线程体B.定义了线程与交互的方法C.提供了线程组或组中的每个线程进行操作的方法D.以上都不是9.实现线程的创建有( )方法A.一种B. 两种 C.三种 D.四种10.一个进程可以包含( )个线程A.一B. 二C. 三D.四11.Java中的线程模型包含( )A.一个虚拟处理机B.CPU执行的代码C.代码操作的数据D.以上都是12.关于线程组以下说法错误的是( )A.在应用程序中线程可以独立存在,不一定要属于某个线程B.一个线程只能创建时设置其线程组C.线程组由ng包中的ThreadGroup类实现D.线程组使一组线程可以作为一个对象进行统一处里或维护13.下列定义线程方法正确的是( )A.Public Thread();B.Public Thread(Runnable target);C.Public Thread(ThreadGroup group,Runnable target);D.以上都正确14.以下不属于Thread类提供的线程控制方法是( )A.break()B.sleep()C.yield()D.join()15.下列关于线程的说法正确的是( )A.线程就是进程B.线程在操作系统出现后就产生了C.Soloris是支持线程的操作系统D.在单处理器和多处理器上多个线程不可以并发执行16.下列不属于线程生命周期状态的是( )A. 新建状态B.可运行状态C. 运行状态D.解锁状态17.以下不属于Thread类的线程优先级静态常量的是( )A.MIN_PRIORITYB.MAX__PRIORITYC.NORM__PRIORITYD.BEST__PRIORITY18.( )关键字可以对对象加互斥锁。

A.synchronizedB.transientC.serializeD.static19.下列( )方法和resume()方法相互搭配,使线程停止执行,然后调用resume()方法恢复线程。

A.interrupt()B.stop()C.suspend()D.yield()20.Thread类的方法中,getName()方法的作用是( )A.返回线程组的名称B.设置线程组的名称C.返回线程的名称D.设置线程的名称21.线程调用了sleep()方法后,该线程将进入( )状态A.可运行状态B.运行状态C.阻塞状态D.终止状态22.下列( )类或接口定义了线程同步与交互的方法。

A.ThreadB.RunnableC.ObjectD.ThreadGroup23.Java中线程是由线程类的( )方法定义的。

A.init()B.run()C.application()D.main()24.线程控制方法中,stop()的作用是( )A.强行终止线程B.使比其低的优先级线程运行C.只让给同优先级运行D.返回当前线程的引用25.在以下( )情况下,线程就进入可运行状态。

A.线程调用了sleep()方法时B.线程调用了join()方法时C.线程调用了yield()方法时D.以上都是26.下列说法中,正确的一项是()A.单处理机的计算机上,2个线程实际上不能并发执行B.单处理机的计算机上,2个线程实际上能够并发执行C.一个线程可以包含多个进程D.一个进程可以包含多个线程27.下列说法中错误的一项是()A.线程就是程序B.线程是一个程序的单个执行流C.多线程是指一个程序的多个执行流D.多线程用于实现并发28.下列关于Thread类的线程控制方法的说法中错误的一项是()A.线程可以通过调用sleep()方法使比当前线程优先级的线程运行B.线程可以通过调用yield()方法和当前线程优先级一样的线程运行C.线程sleep()方法调用结束后,该线程进入运行状态D.若没有相同优先级的线程处于可运行状态,县城调用yield()方法时,当前线程将继续执行30.下列哪一个操作不能使线程从等待阻塞状态进入对象锁阻塞状态?A.等待阻塞状态下的线程被notify()唤醒B.等待阻塞状态下的线程被interrput()中断C.等待时间到D.等待阻塞状态下的进程调用wait()方法31.下列哪一个方法可以使线程从运行状态进入其他阻塞状态?A. sleep()B. wait()C. yield()D. start()32.下列哪一个不属于Java线程模型的组成部分?A.虚拟的CPUB.虚拟CPU执行的代码C.代码所操作的数据D.执行流B.输出“INTERRUPTED”C.输出“DONE WAITING”D.编译通过,但是不输出任何字符串34.下列哪一种情况一定不会使当前的线程暂停执行?()A.该线程抛出一个InterruptedExceptionB.该线程调用sleep()方法C.该线程创建一个新的子线程D.该线程从输入流读取文件数据35.下列说法中错误的一项是()A.Java中的每一个线程都属于某个线程组B.线程只能在其创建时设置所属的线程组C.线程创建之后,可以从一个线程组转移到另一个线程组D.新建的线程组默认情况下属于其父线程所属的线程组36.下列不属于线程组成部分的一项是()A. 程序计数器B. 堆栈C. 进程地址空间中的代码 C. 栈指针37.下列关于Java线程模型的说法中,错误的一项是()A.Java线程模型包括了计算机的CPUB.代码可以与其他线程共享C.数据可以被多个线程共享D.线程模型在ng.Thread类中被定义38.下列关于Thread类提供的线程控制方法的说法中,错误的一项是()A.在线程a中执行线程b的join()方法,则线程a等待直到b执行完成B.线程a通过调用interrupt()方法来中断其阻塞状态C.若线程a调用方法isAlive()返回值为true,则说明a正在执行中D.currentThread()方法返回当前线程的引用39.下面的哪一个关键字通常用来对对象加锁,从而使得对对象的访问是排他的?()A. serializeB. transientC. synchronizedD. static40.下列说法中错误的一项是()A.可串行化的类必须实现Serializable接口B.可串行化的类中的静态变量可以不被串行化C.private数据访问权限能够限制数据不被串行化D.对象串行化使用Java语言提供的默认机制41.下列说法中正确的一项是()A.代码和数据是进程的组成部分B.代码和数据是线程的组成部分C.进程是轻型线程D.线程中包含进程42.下列说法中错误的一项是()A.共享数据的所有访问都必须使用synchronized加锁B.共享数据的访问不一定全部使用synchronized加锁C.所有的对共享数据的访问都是临界区D.临界区必须使用synchronized标识43.下列有关线程的叙述中正确的一项是()A.一旦一个线程都创建,它就立即开始运行B.使用start()方法可以使一个线程成为可运行的,但是它不一定立即开始运行C.当一个线程因为抢占机制而停止运行时,它被放在课运行队列的前面D.一个线程可能因为不同的原因停止并进入终止状态44.下列方法中,不属于Thread类提供的线程控制方法的一个是()A. sleep()B. interrupt()C. init()D. yield()45.实现Runnable接口创建一个线程的语句是()Thead t = new Thead (target)Thead t = new Thead ();t.target=targetThead t = new Thead ();T.start(target)Thead t = new Thead ();T.run(target)Thead类定义与下列哪一个包中?()A. java.ioB. ngC. java.utilD. java.awt46.下列说法中,错误的一项是()A.实现了Runnable接口的类,可以通过extends来继承其他的类B.实现了Runnable接口的类,不能继承其他的类C.Thread类的子类应该是关于CPU行为的类D.Thread类的子类也实现了Runnable接口47.下列是通过实现Runnable接口创建的类,其中正确的一项是()A. class A3 implements Runnable{void run(){//··········}}B. class A3 extends Runnable{public void run(){//··········}}C. class A3 implements Runnable{public void run(){//··········}}D. class A3 implements Runnable{//··········}48.Thread类的常量NORM_PRIORITY代表的优先级是()A.最低优先级B.普通优先级C.最高优先级D.不代表任何优先级50.下列哪一个包给出了Runnable接口的定义?()A. java.utilB. java.ioC. ngD. java.sql二、填空题201.线程模型在Java中是由________类进行定义和描述的。

相关文档
最新文档