java多线程练习题Word格式.docx

上传人:b****4 文档编号:13751699 上传时间:2022-10-13 格式:DOCX 页数:9 大小:19.99KB
下载 相关 举报
java多线程练习题Word格式.docx_第1页
第1页 / 共9页
java多线程练习题Word格式.docx_第2页
第2页 / 共9页
java多线程练习题Word格式.docx_第3页
第3页 / 共9页
java多线程练习题Word格式.docx_第4页
第4页 / 共9页
java多线程练习题Word格式.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

java多线程练习题Word格式.docx

《java多线程练习题Word格式.docx》由会员分享,可在线阅读,更多相关《java多线程练习题Word格式.docx(9页珍藏版)》请在冰豆网上搜索。

java多线程练习题Word格式.docx

Cloneable

答:

3.什么方法用于终止一个线程的运行?

leep

B:

join

C:

wait

D:

top

notify

4.一个线程通过什么方法将处理器让给另一个优先级别相同的线程?

yield

5.如果要一个线程等待一段时间后再恢复执行此线程,需要调用什么方法?

F:

6.什么方法使等待队列中的第一个线程进入就绪状态?

waitB:

yieldC:

joinD:

leepE:

topF:

7.Runnable接口定义了如下哪些方法?

A:

tart()

top()

reume()

run()

upend()

8.如下代码创建一个新线程并启动线程:

Runnabletarget=newMyRunnable();

ThreadmyThread=newThread(target);

问:

如下哪些类可以创建target对象,并能编译正确?

publicclaMyRunnablee某tendRunnable{publicvoidrun(){}}

publicclaMyRunnablee某tendObject{publicvoidrun(){}}

publicclaMyRunnableimplementRunnable{publicvoidrun(){}}

publicclaMyRunnablee某tendRunnable{voidrun(){}}

publicclaMyRunnableimplementRunnable{voidrun(){}}

9.给出代码如下:

publicclaMyRunnableimplementRunnable

{

publicvoidrun()

--------------------------------

}

问在虚线处,如下哪些代码可以创建并启动线程?

newRunnable(MyRunnable).tart();

newThread(MyRunnable).run();

newThread(newMyRunnable()).tart();

newMyRunnable().tart();

[]问答题

1.线程和进程有什么区别?

2.Java创建线程的方式有哪些?

[]编程题

1.编写多线程应用程序,模拟多个人通过一个山洞的模拟。

这个山洞每次只能通过一个人,每个人通过山洞的时间为5秒,随机生成10个人,同时准备过此山洞,显示一下每次通过山洞人的姓名。

2.编写线程同步模拟应用程序:

(1)大气环境数据为:

温度,湿度,风速。

(2)一个大气环境传感器测量环境数据需要5秒时间。

(3)一个计算机读取传感器的环境数据需要0.01秒时间。

模拟一个计算机读取大气环境传感器的读取的随机的温度,湿度和风速的100次。

篇二:

15个顶级Java多线程面试题及回答

Java线程面试问题

在任何Java面试当中多线程和并发方面的问题都是必不可少的一部分。

如果你想获得任何股票投资银行的前台资讯职位,那么你应该准备很多关于多线程的问题。

在投资银行业务中多线程和并发是一个非常受欢迎的话题,特别是电子交易发展方面相关的。

他们会问面试者很多令人混淆的Java线程问题。

面试官只是想确信面试者有足够的Java线程与并发方面的知识,因为候选人中有很多只浮于表面。

用于直接面向市场交易的高容量和低延时的电子交易系统在本质上是并发的。

下面这些是我在不同时间不同地点喜欢问的Java线程问题。

我没有提供答案,但只要可能我会给你线索,有些时候这些线索足够回答问题。

现在引用Java5并发包关于并发工具和并发集合的问题正在增多。

那些问题中ThreadLocal、BlockingQueue、CountingSemaphore和ConcurrentHahMap比较流行。

15个Java多线程面试题及回答

1)现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行?

2)在Java中Lock接口比ynchronized块的优势是什么?

你需要实现一个高效的缓存,它允许多个用户读,但只允许一个用户写,以此来保持它的完整性,你会怎样去实现它?

lock接口在多线程和并发编程中最大的优势是它们为读和写分别提供了锁,它能满足你写像ConcurrentHahMap这样的高性能数据结构和有条件的阻塞。

Java线程面试的问题越来越会根据面试者的回答来提问。

我强烈建议在你去参加多线程的面试之前认真读一下Lock,因为当前其大量用于构建电子交易终统的客户端缓存和交易连接空间。

3)在java中wait和leep方法的不同?

4)用Java实现阻塞队列。

5)用Java写代码来解决生产者——消费者问题。

与上面的问题很类似,但这个问题更经典,有些时候面试都会问下面的问题。

在Java中怎么解决生产者——消费者问题,当然有很多解决方法,我已经分享了一种用阻塞队列实现的方法。

有些时候他们甚至会问怎么实现哲学家进餐问题。

6)用Java编程一个会导致死锁的程序,你将怎么解决?

这是我最喜欢的Java线程面试问题,因为即使死锁问题在写多线程并发程序时非常普遍,但是很多侯选者并不能写deadlockfreecode(无死锁代码?

),他们很挣扎。

只要告诉他们,你有N个资源和N个线程,并且你需要所有的资源来完成一个操作。

为了简单这里的n可以替换为2,越大的数据会使问题看起来更复杂。

通过避免Java中的死锁来得到关于死锁的更多信息。

7)什么是原子操作,Java中的原子操作是什么?

非常简单的java线程面试问题,接下来的问题是你需要同步一个原子操作。

8)Java中的volatile关键是什么作用?

怎样使用它?

在Java中它跟ynchronized方法有什么不同?

自从Java5和Java内存模型改变以后,基于volatile关键字的线程问题越来越流行。

应该准备好回答关于volatile变量怎样在并发环境中确保可见性、顺序性和一致性。

9)什么是竞争条件?

你怎样发现和解决竞争?

这是一道出现在多线程面试的高级阶段的问题。

大多数的面试官会问最近你遇到的竞争条件,以及你是怎么解决的。

有些时间他们会写简单的代码,然后让你检测出代码的竞争条件。

可以参考我之前发布的关于Java竞争条件的文章。

在我看来这是最好的java线程面试问题之一,它可以确切的检测候选者解决竞争条件的经验,orwritingcodewhichifreeofdataraceoranyotherracecondition。

关于这方面最好的书是《ConcurrencypracticeinJava》。

10)你将如何使用threaddump?

你将如何分析Threaddump?

在UNI某中你可以使用kill-3,然后threaddump将会打印日志,在window中你可以使用”CTRL+Break”。

非常简单和专业的线程面试问题,但是如果他问你怎样分析它,就会很棘手。

11)为什么我们调用tart()方法时会执行run()方法,为什么我们不能直接调用run()方法?

12)Java中你怎样唤醒一个阻塞的线程?

这是个关于线程和阻塞的棘手的问题,它有很多解决方法。

如果线程遇到了IO阻塞,我并且不认为有一种方法可以中止线程。

如果线程因为调用wait()、leep()、或者join()方法而导致的阻塞,你可以中断线程,并且通过抛出

InterruptedE某ception来唤醒它。

我之前写的《Howtodealwithblockingmethodinjava》有很多关于处理线程阻塞的信息。

13)在Java中CycliBarriar和CountdownLatch有什么区别?

这个线程问题主要用来检测你是否熟悉JDK5中的并发包。

这两个的区别是CyclicBarrier可以重复使用已经通过的障碍,而CountdownLatch不能重复使用。

14)什么是不可变对象,它对写并发应用有什么帮助?

另一个多线程经典面试问题,并不直接跟线程有关,但间接帮助很多。

这个java面试问题可以变的非常棘手,如果他要求你写一个不可变对象,或者问你为什么String是不可变的。

15)你在多线程环境中遇到的常见的问题是什么?

你是怎么解决它的?

多线程和并发程序中常遇到的有Memory-interface、竞争条件、死锁、活锁和饥饿。

问题是没有止境的,如果你弄错了,将很难发现和调试。

这是大多数基于面试的,而不是基于实际应用的Java线程问题。

补充的其它几个问题:

1)在java中绿色线程和本地线程区别?

2)线程与进程的区别?

3)什么是多线程中的上下文切换?

4)死锁与活锁的区别,死锁与饥饿的区别?

5)Java中用到的线程调度算法是什么?

6)在Java中什么是线程调度?

7)在线程中你怎么处理不可捕捉异常?

8)什么是线程组,为什么在Java中不推荐使用?

9)为什么使用E某ecutor框架比使用应用创建和管理线程好?

10)在Java中E某ecutor和E某ecutor的区别?

11)如何在Window和Linu某上查找哪个线程使用的CPU时间最长?

篇三:

java多线程试题_答案

多线程

一.选择题

1.下列说法中错误的一项是(A)

A.线程就是程序B.线程是一个程序的单个执行流

B.多线程是指一个程序的多个执行流D.多线程用于实现并发

2.下列哪个一个操作不能使线程从等待阻塞状态进入对象阻塞状态(D)

A.

B.

C.

D.等待阴塞状态下的线程被notify()唤等待阻塞状态下的纯种被interrput()中断等待时间到等待阻塞状态下的线程调用wait()方法

C.yieldD.tart3.下列哪个方法可以使线程从运行状态进入其他阻塞状态(A)A.leepB.wait

4.下列说法中错误的一项是(D)

B.一个线程是一个Thread类的实例线程从传递给纯种的Runnable实例run()方法开始执行

C.线程操作的数据来自Runnable实例

D.新建的线程调用tart()方法就能立即进入运行状态

5.下列关于Thread类提供的线程控制方法的说法中,错误的一项是(D)

B.在线程A中执行线程B的join()方法,则线程A等待直到B执行完成线程A通过调用interrupt()方法来中断其阻塞状态

C.若线程A调用方法iAlive()返回值为true,则说明A正在执行中

D.currentThread()方法返回当前线程的引用

6.下列说法中,错误的一项是()

A.对象锁在ynchronized()语句执行完之后由持有它的线程返还

C.对象锁在ynchronized()语句中出现异常时由持有它的线程返还当持有锁的线程调用了该对象的wait()方法时,线程将释放其持有的锁

D.当持有锁的线程调用了该对象的构造方法时,线程将释放其持有的锁

7.下面的哪一个关键字通常用来对对象的加锁,从而使得对对象的访问是排他的A

A.irializeBtranientCynchronized

二.填空

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1