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

合集下载

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、下面哪个方法可以在任何时候被任何线程调用? ()

进程线程练习题

进程线程练习题

进程线程练习题一、选择题1. 进程是指()。

a) 线程的集合b) 代码的集合c) 资源的集合d) 程序的集合2. 线程是指()。

a) 进程的集合b) 代码的集合c) 资源的集合d) 程序的集合3. 在操作系统中,多个进程可以通过()来实现并发执行。

a) 共享内存b) 进程间通信c) 线程d) 同步操作4. 下列关于进程和线程的说法中,错误的是()。

a) 进程是资源分配的最小单位b) 线程是程序执行的最小单位c) 进程之间是相互独立的d) 线程之间共享内存空间5. 在Java中,可以创建线程的两种方式是()。

a) 继承Thread类、实现Runnable接口b) 实现Thread类、继承Runnable接口c) 实现Thread接口、继承Runnable类d) 继承Thread类、实现Callable接口二、填空题1. 进程间通信的方式有()。

2. 线程可以共享的资源有()。

3. 线程调度的方式包括()和()。

三、简答题1. 请简述进程和线程的概念及区别。

2. 进程间通信的方式有哪些,各自的优缺点是什么?3. 线程调度的方式有哪些,各自的优缺点是什么?4. 请举例说明多线程的优势以及适用场景。

四、编程题请使用Java语言编写一个多线程程序,实现以下功能:1. 创建两个线程T1和T2,分别打印出1~5和6~10的数字。

2. 要求线程T1和T2交替执行,即先打印数字1,然后打印数字6,接着打印数字2,再打印数字7,以此类推。

3. 在程序中使用合适的同步机制来实现线程的交替执行。

答案:一、选择题1. a) 线程的集合2. b) 代码的集合3. b) 进程间通信4. d) 线程之间共享内存空间5. a) 继承Thread类、实现Runnable接口二、填空题1. 管道通信、消息队列、共享内存、信号量、套接字通信等2. 内存空间3. 抢占式调度、协同式调度三、简答题1. 进程是操作系统进行资源分配和调度的基本单位。

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程序,模拟生产者-消费者问题。

java期末试题及答案

java期末试题及答案

java期末试题及答案一、选择题(每题2分,共20分)1. Java中,用于定义一个类是:A. classB. interfaceC. structD. enum答案:A2. 下列哪个关键字用于捕获异常?A. tryB. catchC. throwD. finally答案:B3. Java中,下列哪个不是访问修饰符?A. publicB. privateC. protectedD. static答案:D4. 下列哪个是Java的集合框架?A. ArrayListB. LinkedListC. HashMapD. All of the above答案:D5. 下列哪个不是Java的垃圾回收机制?A. Mark and SweepB. Reference CountingC. CopyingD. Generational Heap答案:B6. Java中,下列哪个是多线程的创建方式?A. 继承Thread类B. 实现Runnable接口C. 实现Callable接口D. All of the above答案:D7. Java中,下列哪个关键字用于内部类定义?A. staticB. finalC. innerD. private答案:C8. 下列哪个是Java的泛型?A. ListB. MapC. SetD. All of the above答案:D9. Java中,下列哪个是正确的继承关系?A. class A extends BB. class A implements BC. class A implements AD. class A extends interface B答案:A10. Java中,下列哪个是正确的方法重载?A. public void print(int i)B. public void print(String s)C. public void print(int i, String s)D. All of the above答案:D二、填空题(每题2分,共10分)1. Java中,用于定义一个接口的关键字是________。

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 关键字来保证线程安全性,用于返回当前的计数值。

java多线程试题_答案

java多线程试题_答案

java多线程试题_答案多线程一.选择题1.下列说法中错误的一项是(A)A.线程就是程序B.线程是一个程序的单个执行流B.多线程是指一个程序的多个执行流D.多线程用于实现并发2.下列哪个一个操作不能使线程从等待阻塞状态进入对象阻塞状态(D)A.等待阴塞状态下的线程被notify()唤B.等待阻塞状态下的纯种被interrput()中断C.等待时间到D.等待阻塞状态下的线程调用wait()方法3.下列哪个方法可以使线程从运行状态进入其他阻塞状态(A)A.sleepB.waitC.yieldD.start4.下列说法中错误的一项是(D)A.一个线程是一个Thread类的实例B.线程从传递给纯种的Runnable实例run()方法开始执行C.线程操作的数据来自Runnable实例D.新建的线程调用start()方法就能立即进入运行状态5.下列关于Thread类提供的线程控制方法的说法中,错误的一项是(D)A.在线程A中执行线程B的join()方法,则线程A等待直到B执行完成B.线程A通过调用interrupt()方法来中断其阻塞状态C.若线程A调用方法isAlive()返回值为true,则说明A正在执行中D.currentThread()方法返回当前线程的引用6.下列说法中,错误的一项是()A.对象锁在synchronized()语句执行完之后由持有它的线程返还B.对象锁在synchronized()语句中出现异常时由持有它的线程返还C.当持有锁的线程调用了该对象的wait()方法时,线程将释放其持有的锁D.当持有锁的线程调用了该对象的构造方法时,线程将释放其持有的锁7.下面的哪一个关键字通常用来对对象的加锁,从而使得对对象的访问是排他的 AA.sirialize B transient C synchronized D static二.填空题1. 在操作系统中,被称做轻型的进程是线程2. 多线程程序设计的含义是可以将一个程序任务分成几个并行的任务3. 在Java程序中,run()方法的实现有两种方式:实现Runnable 接口和继承Thread类4 .多个线程并发执行时,各个线程中语句的执行顺序是确定的,但是线程之间的相对执行顺序是不确定的6.Java中的对象锁是一种独占的排他锁7.程序中可能出现一种情况:多个线种互相等待对方持有的锁,而在得到对方的锁之前都不会释放自己的锁,这就是死锁8.线程的优先级是在Thread类的常数MIN_PRIORITY 和MAX_PRIORITY之间的一个值9.处于新建状态的线程可以使用的控制方法是start() 和stop() 。

JAVA使用多线程(线程池)进行数据处理

JAVA使用多线程(线程池)进行数据处理

JAVA使⽤多线程(线程池)进⾏数据处理*⼯作顺序:* 1)、线程池创建,准备好core数量的核⼼线程,准备接受任务* 1.1、core满了,就将再进来的任务放⼊阻塞队列中。

空闲的core就会⾃⼰去阻塞队列获取任务执⾏* 1.2、阻塞队列满了,就直接开新线程执⾏,最⼤只能开到max指定的数量* 1.3、max满了就⽤RejectedExecut ionHandler拒绝任务* 1.4、max都执⾏完成,有很多空闲.在指定的时间keepAliveTime以后,释放max-core这些线程new LinkedBlockingDeque<>(): 默认是Integer的最⼤值。

内存不够⼀个线程池core 7; max 20,queue:50,100并发进来怎么分配的;7个会⽴即得到执⾏,50个会进⼊队列,再开13个进⾏执⾏。

剩下的30个就使⽤拒绝策略。

Executors . newCachedThreadPool() core是0,所有都可回收Executors . newF ixedThreadPool()固定⼤⼩,core=max; 都不可回收Executors. newScheduledThreadPool()定时任务的线程池Executors. newSingleThreadExecutor()单线程的线程池,后台从队列⾥⾯获取任务,挨个执⾏import mons.collections.CollectionUtils;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.stereotype.Service;import java.util.ArrayList;import java.util.List;import java.util.concurrent.*;/*** 以下是伪代码,要根据⾃⼰的实际逻辑进⾏整合*/@Servicepublic class PushProcessServiceImpl implements PushProcessService {private final static Logger logger = LoggerFactory.getLogger(PushProcessServiceImpl.class);/***每个线程更新的条数* 这表⽰每次执⾏五千条数据的推送操作*/private static final Integer LIMIT = 5000;/*** 起的线程数*/private static final Integer THREAD_NUM = 5;/*** 创建线程池** - corePoolSize:线程核⼼参数选择了5** - maximumPoolSize:最⼤线程数选择了核⼼线程数2倍数** - keepAliveTime:⾮核⼼闲置线程存活时间直接置为0** - unit:⾮核⼼线程保持存活的时间选择了 TimeUnit.SECONDS 秒** - workQueue:线程池等待队列,使⽤容量初始为100的 LinkedBlockingQueue阻塞队列** 线程池拒绝策略,采⽤了默认AbortPolicy:直接丢弃任务,抛出异常。

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

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)。

7Java多线程机制
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. synchronized
B. include
C. import
D. Thread
5. 线程控制方法中,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. 多个CPU
D. 异步调用
9.Thread类的方法中,toString()方法的作用是()
A. 只返回线程的名称
B. 返回当前线程所属的线程组的名称
C. 返回当前线程对象
D. 返回线程的名称
10.Java语言具有许多优点和特点,下列选项中,哪个反映了Java程序并行机制的特点()
A. 安全性
B. 多线程
C. 跨平台
D. 可移值
11.以下哪个关键字可以用来对对象加互斥锁()
A. transient
B. synchronized
C. serialize
D. static
12.下面关于进程、线程的说法不正确的是( )。

A.进程是程序的一次动态执行过程。

一个进程在其执行过程中,可以产生多个线程——多线程,形成多条执行线索。

B.线程是比进程更小的执行单位,是在一个进程中独立的控制流,即程序内部的控制流。

线程本身不能自动运行,栖身于某个进程之中,由进程启动执行。

C.Java多线程的运行与平台无关。

D.对于单处理器系统,多个线程分时间片获取CPU或其他系统资源来运行。

对于多处理器系统,线程可以分配到多个处理器中,从而真正的并发执行多任务。

7.2填空题
1.________是java程序的并发机制,它能同步共享数据、处理不同的事件。

2.线程是程序中的一个执行流,一个执行流是由CPU运行程序的代码、__________所形
成的,因此,线程被认为是以CPU为主体的行为。

3.线程的终止一般可以通过两种方法实现:自然撤销或者是__________.
4.线程模型在java中是由__________类进行定义和描述的。

5.线程的创建有两种方法:实现_________接口和继承Thread类。

6.多线程程序设计的含义是可以将程序任务分成几个________的子任务。

7.按照线程的模型,一个具体的线程也是由虚拟的CPU、代码与数据组成,其中代码与数
据构成了___________,线程的行为由它决定。

8.ava中,新建的线程调用start()方法、如myThread.start(),将使线程的状态从New(新建状
态)转换为_________。

9.多线程是java程序的________机制,它能同步共享数据,处理不同事件。

10.进程是由代码、数据、内核状态和一组寄存器组成,而线程是表示程序运行状态的
______,如程序计数器、栈指针以及堆栈组成。

11.Thread类提供了一系列基本线程控制方法,如果我们需要让与当前进程具有相同优先
级的线程也有运行的机会则可以调用________方法。

12.在多线程系统中,多个线程之间有________和互斥两种关系。

13. 在一个时间只能由一个线程访问的资源称为临界资源,访问临界资源的代码
___________。

7.3判断题
1.一个Java多线程的程序不论在什么计算机上运行,其结果始终是一样的。

(×)
2.Java线程有五种不同的状态,这五种状态中的任何两种状态之间都可以相互转换。

(×)
3.所谓线程同步就是若干个线程都需要使用同一个synchronized修饰的方法。

(√)
4.使用Thread子类创建线程的优点是可以在子类中增加新的成员变量,使线程具有某种
属性,也可以在子类中新增加方法,使线程具有某种功能。

但是,Java不支持多继承,Thread类的子类不能再扩展其他的类。

(√)
5.Java虚拟机(JVM)中的线程调度器负责管理线程,调度器把线程的优先级分为10个级别,
分别用Thread类中的类常量表示。

每个Java线程的优先级都在常数1和10之间,即Thread.MIN_PRIORITY和Thread.MAX_PRIORITY之间。

如果没有明确地设置线程的优先级别,每个线程的优先级都为常数8。

(×)
6.当线程类所定义的run( )方法执行完毕,线程的运行就会终止。

(√)
7.线程的启动是通过引用其start()方法而实现的。

(√)
7.4简答题
1.同步和异步有何异同,在什么情况下分别使用他们举例说明。

2.在Java中,怎样创建一个线程
7.5参考答案
7.5.1单项选择题:
1.C
2.D
3.D
4.A
5.D
6.D
7.C
8.A
9.D 10.B 11.B 12.C
7.5.2填空题
1. 多线程
2. 操纵程序的数据
3. 被停止
5. Runnable
6. 并行
7. 线程体
8. 可运行状态
9. 并发
10.寄存器
11.yield()
12.同步
13.临界代码
7.5.3判断题
1.×
2. ×
3.√
4.√
5. ×
6. √
7. √
7.5.4简答题
1. 同步和异步有何异同,在什么情况下分别使用他们举例说明。

如果数据将在线程间共享。

例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。

当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。

2.在Java中,怎样创建一个线程
答:
方法一:定义类来实现Runnable接口
class TestThread implements Runnable {
public void run() { …}
}
方法二:继承Thread类来实现
class TestThread extends Thread {
TestThread(String name) {
super(name);
start();
}
public void run() {…}
}。

相关文档
最新文档