Java多线程编程题目题目

博客分类:
浏览: 1164400 次
来自: 上海
少了个junit-4.8.2的包
java过滤emoji字符处理,希望能帮到你http://ww ...
这个挺好JavaScript实现input输入框控件只允许输入 ...
东西太好啦受教啊
naiyizute 写道编码表好像不全,能提供全一点的吗htt ...
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'人生在世三万天,趣果有间,孤独无解。
Java多线程习题解
Java多线程习题解
1&.现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行?
2&.在Java中Lock接口比synchronized块的优势是什么?你需要实现一个高效的缓存,它允许多个用户读,但只允许一个用户写,以此来保持它的完整性,你会怎样去实现它?
3&.在java中wait和sleep方法的不同?
4&.用Java实现阻塞队列。
5&.用Java写代码来解决生产者——消费者问题。
6&.用Java编程一个会导致死锁的程序,你将怎么解决?
7&.什么是原子操作,Java中的原子操作是什么?
8&.Java中的volatile关键是什么作用?怎样使用它?在Java中它跟synchronized方法有什么不同?
9&. 什么是竞争条件?你怎样发现和解决竞争?
10)&.你将如何使用thread dump?你将如何分析Thread dump?
11&. 为什么我们调用start()方法时会执行run()方法,为什么我们不能直接调用run()方法?
12&.Java中你怎样唤醒一个阻塞的线程?
13&.在Java中CycliBarriar和CountdownLatch有什么区别?
14&.什么是不可变对象,它对写并发应用有什么帮助?
15&.你在多线程环境中遇到的常见的问题是什么?你是怎么解决它的?
二、答案&参考答案:
1&.使用join方法。
2&.ReadWriteLock适用于读多写少的并发场景
3&.等待时wait会释放锁,而sleep一直持有锁。Wait通常被用于线程间交互,sleep通常被用于暂停执行。
4&.wait()和notify()
7&.原子操作是不可分割的,从运行开始到结束,中间不会切换到另一线程
9&.当多个进程或者线程在读写数据时,其最终的的结果依赖于多个进程的指令执行顺序。最后更新的进程决定变量的最终值
11&.start()方法是创建一个线程开始执行(与主线程同步),run()方法是创建一个线程(在主线程结束之后)开始执行
12&.notify()或者通过对InterruptedException的处理
14&.private final 属性,并不提供set方法,无法从类的外部改变该属性的值,一旦初始化便不可更改称为不可变对象(具体可参见Java中String为什么是不可变的)
第10、13、15参考答案:
没有更多推荐了,发布于 01/03 09:25
多线程并发编程是Java编程中重要的一块内容,也是面试重点覆盖区域。所以,学好多线程并发编程对Java程序员来来说极其重要的。下面小编整理了60道最常见的Java多线程面试题及答案,供你学习或者面试参考。
多线程有什么用?
线程和进程的区别是什么?
ava实现线程有哪几种方式?
启动线程方法start()和run()有什么区别?
怎么终止一个线程?如何优雅地终止线程?
一个线程的生命周期有哪几种状态?它们之间如何流转的?
线程中的wait()和sleep()方法有什么区别?
多线程同步有哪几种方法?
什么是死锁?如何避免死锁?
多线程之间如何进行通信?
线程怎样拿到返回结果?
violatile关键字的作用?
新建T1、T2、T3三个线程,如何保证它们按顺序执行?
怎么控制同一时间只有3个线程运行?
为什么要使用线程池?
常用的几种线程池并讲讲其中的工作原理。
线程池启动线程submit()和execute()方法有什么不同?
CyclicBarrier和CountDownLatch的区别?
什么是活锁、饥饿、无锁、死锁?
什么是原子性、可见性、有序性?
什么是守护线程?有什么用?
怎么中断一个线程?如何保证中断业务不影响?
一个线程运行时发生异常会怎样?
什么是重入锁?
Synchronized有哪几种用法?
Fork/Join框架是干什么的?
线程数过多会造成什么异常?
说说线程安全的和不安全的集合。
什么是CAS算法?在多线程中有哪些应用。
怎么检测一个线程是否拥有锁?
Jdk中排查多线程问题用什么命令?
线程同步需要注意什么?
线程wait()方法使用有什么前提?
Fork/Join框架使用有哪些要注意的地方?
线程之间如何传递数据?
保证&可见性&有哪几种方式?
说几个常用的Lock接口实现锁。
ThreadLocal是什么?有什么应用场景?
ReadWriteLock有什么用?
FutureTask是什么?
怎么唤醒一个阻塞的线程?
不可变对象对多线程有什么帮助?
多线程上下文切换是什么意思?
Java中用到了什么线程调度算法?
Thread.sleep(0)的作用是什么?
Java内存模型是什么,哪些区域是线程共享的,哪些是不共享的
什么是乐观锁和悲观锁?
Hashtable的size()方法为什么要做同步?
同步方法和同步块,哪种更好?
什么是自旋锁?
Runnable和Thread用哪个好?
Java中notify和notifyAll有什么区别?
为什么wait/notify/notifyAll这些方法不在thread类里面?
为什么wait和notify方法要在同步块中调用?
为什么你应该在循环中检查等待条件?
Java中堆和栈有什么不同?
你如何在Java中获取线程堆栈?
如何创建线程安全的单例模式?
什么是阻塞式方法?
提交任务时线程池队列已满会时发会生什么?
获取以上所有面试题答案。
分享Java干货,高并发编程,热门技术教程,微服务及分布式技术,架构设计,区块链技术,人工智能,大数据,Java面试题,以及前沿热门资讯等。
& 著作权归作者所有
人打赏支持
码字总数 44258
祝大家五一劳动节快乐,工作顺利! 又到了总结上个月干货的时候了,这个月我们带来了各种Java技术干货,各种送书抽奖福利,各种面试题分享,各种最新动态资讯等。 - 5.1重磅活动 区块链免费送...
Java技术栈 ? 04/30 ?
不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题。Java语言一个重要的特点就是内置了对并发的支持,让Java大受企业和程序员的欢迎。大多数待遇丰厚的Java开发职位都要求开发者...
swearyd457 ?
Java 线程面试问题   在任何Java面试当中多线程和并发方面的问题都是必不可少的一部分。如果你想获得任何股票投资银行的前台资讯职位,那么你应该准备很多关于多线程的问题。在投资银行业务...
一只死笨死笨的猪 ?
Java 线程面试问题 在任何Java面试当中多线程和并发方面的问题都是必不可少的一部分。如果你想获得任何股票投资银行的前台资讯职位,那么你应该准备很多关于多线程的问题。在投资银行业务中多...
目录(?)[-] 50道Java线程面试题 1 什么是线程 2 线程和进程有什么区别 3 如何在Java中实现线程 4 用Runnable还是Thread 6 Thread 类中的start 和 run 方法有什么区别 7 Java中Runnable和Cal...
不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题。Java语言一个重要的特点就是内置了对并发的支持,让Java大受企业和程序员的欢迎。大多数待遇丰厚的Java开发职位都要求开发者...
loda0128 ?
Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互...
Java小辰 ? 05/22 ?
一、概念 什么是线程 一个线程要执行任务,必须得有线程 一个进程(程序)的所有任务都在线程中执行的 一个线程执行任务是串行的,也就是说一个线程,同一时间内,只能执行一个任务 多线程原理 同一...
码蚁说架构 ? 05/31 ?
最近看书的过程中整理了一些面试题,面试题以及答案都在我的文章中有所提到,希望你能在以问题为导向的过程中掌握虚拟机的核心知识。面试毕竟是面试,核心知识我们还是要掌握的,加油~~~ 下面...
snailclimb ? 05/12 ?
这一道java面试题是在很早出来的时候,在一家大型的上市公司面试的题,不过当时交了白卷。现在将这道java面试题的答案整理出来。 package com.buyli. /** * @Copyright @ 2012 *ja...
没有更多内容
加载失败,请刷新页面
我们都知道java有8大基本数据类型,分别是4个整数型byte,short,int,long,2个浮点类型float,double,1个布尔型boolean和一个字符型char。 小姿势1:当我们在java中输入一个整数常量时,默...
kalnkaya ? 4分钟前 ?
MongoDB副本集 o 早期版本使用master-slave,一主一从和MySQL类似,但slave在此架构中为只读,当主库宕机后,从库不能自动切换为主 o 目前已经淘汰master-slave模式,改为副本集,这种模式...
寰宇01 ? 8分钟前 ?
在信息编码中,两个合法代码对应位上编码不同的位数称为码距,又称海明距离。 两个码字的对应比特取值不同的比特数称为这两个码字的海明距离。在一个有效编码集中,任意两个码字的海明距离的最...
漫步当下 ? 9分钟前 ?
Linux ubuntu 切换阿里更新源 查看codename 首先查看自己的ubuntu系统的codename,直接导致你更新的源是否对你的系统起效果,查看方法: lsb_release -a benny@benny:/etc/apt$ lsb_release...
benny周 ? 13分钟前 ?
前言 现在很多App里都内置了Web网页(Hyprid App),比如说很多电商平台,淘宝、京东、聚划算等等,如下图 那么这种该如何实现呢?其实这是Android里一个叫WebView的组件实现的。今天我将全面...
临江仙卜算子 ? 16分钟前 ?
eclipse在线安装FatJar以及错误解决 一、eclipse版本信息 本人使用的是最新版的eclipse,版本信息如下: Eclipse Java EE IDE for Web Developers.Version: Oxygen.2 Release (4.7.2)...
星汉 ? 17分钟前 ?
一、背景 我们实际系统中有很多操作,是不管做多少次,都应该产生一样的效果或返回一样的结果。 例如: 1. 前端重复提交选中的数据,应该后台只产生对应这个数据的一个反应结果。 2. 我们发起...
vshcxl ? 34分钟前 ?
说在前面 本文转自“天河聊技术”微信公众号 @Transactional实现 正文 源码解析 先看下这个注解内容 @Target({ElementType.METHOD, ElementType.TYPE})@Retention(RetentionPolicy.RUNTIM...
天河2018 ? 37分钟前 ?
简介 对于复杂类型例如array,struct都有一个都有一个额外的注解(annotation),可能是storage,memory,calldata之一。根据上下文总是有一个默认的注解类型。但是一般可以通过storage和memor...
trayvon ? 37分钟前 ?
【简介】 Elasticsearch ( ES ) 是一个基于 Lucene 的实时分布式开源的全文搜索和分析引擎。它不但稳定、可靠、快速,而且也具有良好的水平扩展能力,是专门为分布式环境设计的。 Elasticsea...
叶枫啦啦 ? 39分钟前 ?
没有更多内容
加载失败,请刷新页面
文章删除后无法恢复,确定取消删除此文章吗?
亲,自荐的博客将通过私信方式通知管理员,优秀的博客文章审核通过后将在博客推荐列表中显示
确定推荐此文章吗?
确定推荐此博主吗?
聚合全网技术文章,根据你的阅读喜好进行个性推荐
指定官方社区
深圳市奥思网络科技有限公司版权所有15个顶级Java多线程面试题(附答案)
转载 &更新时间:日 11:27:41 & 作者:Java开发-搁浅
这篇文章主要为大家分享了15个顶级Java多线程面试题,考察面试者是否有足够的Java线程与并发知识,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
在任何Java面试当中多线程和并发方面的问题都是必不可少的一部分。如果你想获得任何股票投资银行的前台资讯职位,那么你应该准备很多关于多线程的问题。在投资银行业务中多线程和并发是一个非常受欢迎的话题,特别是电子交易发展方面相关的。他们会问面试者很多令人混淆的Java线程问题。面试官只是想确信面试者有足够的Java线程与并发方面的知识,因为候选人中有很多只浮于表面。用于直接面向市场交易的高容量和低延时的电子交易系统在本质上是并发的。下面这些是我在不同时间不同地点喜欢问的Java线程问题。我没有提供答案,但只要可能我会给你线索,有些时候这些线索足够回答问题。现在引用Java5并发包关于并发工具和并发集合的问题正在增多。那些问题中ThreadLocal、Blocking Queue、Counting Semaphore和ConcurrentHashMap比较流行。
15个Java多线程面试题及回答
1)现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行?
这个线程问题通常会在第一轮或电话面试阶段被问到,目的是检测你对”join”方法是否熟悉。这个多线程问题比较简单,可以用join方法实现。
2)在Java中Lock接口比synchronized块的优势是什么?你需要实现一个高效的缓存,它允许多个用户读,但只允许一个用户写,以此来保持它的完整性,你会怎样去实现它?
lock接口在多线程和并发编程中最大的优势是它们为读和写分别提供了锁,它能满足你写像ConcurrentHashMap这样的高性能数据结构和有条件的阻塞。Java线程面试的问题越来越会根据面试者的回答来提问。我强烈建议在你去参加多线程的面试之前认真读一下Locks,因为当前其大量用于构建电子交易终统的客户端缓存和交易连接空间。
3)在java中wait和sleep方法的不同?
通常会在电话面试中经常被问到的Java线程面试问题。最大的不同是在等待时wait会释放锁,而sleep一直持有锁。Wait通常被用于线程间交互,sleep通常被用于暂停执行。
4)用Java实现阻塞队列。
这是一个相对艰难的多线程面试问题,它能达到很多的目的。第一,它可以检测侯选者是否能实际的用Java线程写程序;第二,可以检测侯选者对并发场景的理解,并且你可以根据这个问很多问题。如果他用wait()和notify()方法来实现阻塞队列,你可以要求他用最新的Java 5中的并发类来再写一次。
5)用Java写代码来解决生产者——消费者问题。
与上面的问题很类似,但这个问题更经典,有些时候面试都会问下面的问题。在Java中怎么解决生产者——消费者问题,当然有很多解决方法,我已经分享了一种用阻塞队列实现的方法。有些时候他们甚至会问怎么实现哲学家进餐问题。
6)用Java编程一个会导致死锁的程序,你将怎么解决?
这是我最喜欢的Java线程面试问题,因为即使死锁问题在写多线程并发程序时非常普遍,但是很多侯选者并不能写deadlock free code(无死锁代码?),他们很挣扎。只要告诉他们,你有N个资源和N个线程,并且你需要所有的资源来完成一个操作。为了简单这里的n可以替换为2,越大的数据会使问题看起来更复杂。通过避免Java中的死锁来得到关于死锁的更多信息。
7) 什么是原子操作,Java中的原子操作是什么?
非常简单的java线程面试问题,接下来的问题是你需要同步一个原子操作。
8) Java中的volatile关键是什么作用?怎样使用它?在Java中它跟synchronized方法有什么不同?
自从Java 5和Java内存模型改变以后,基于volatile关键字的线程问题越来越流行。应该准备好回答关于volatile变量怎样在并发环境中确保可见性。
9) 什么是竞争条件?你怎样发现和解决竞争?
这是一道出现在多线程面试的高级阶段的问题。大多数的面试官会问最近你遇到的竞争条件,以及你是怎么解决的。有些时间他们会写简单的代码,然后让你检测出代码的竞争条件。可以参考我之前发布的关于Java竞争条件的文章。在我看来这是最好的java线程面试问题之一,它可以确切的检测候选者解决竞争条件的经验,or writing code which is free of data race or any other race condition。关于这方面最好的书是《Concurrency practices in Java》。
10) 你将如何使用thread dump?你将如何分析Thread dump?
在UNIX中你可以使用kill -3,然后thread dump将会打印日志,在windows中你可以使用”CTRL+Break”。非常简单和专业的线程面试问题,但是如果他问你怎样分析它,就会很棘手。
11) 为什么我们调用start()方法时会执行run()方法,为什么我们不能直接调用run()方法?
这是另一个非常经典的java多线程面试问题。这也是我刚开始写线程程序时候的困惑。现在这个问题通常在电话面试或者是在初中级Java面试的第一轮被问到。这个问题的回答应该是这样的,当你调用start()方法时你将创建新的线程,并且执行在run()方法里的代码。但是如果你直接调用run()方法,它不会创建新的线程也不会执行调用线程的代码。阅读我之前写的《start与run方法的区别》这篇文章来获得更多信息。
12) Java中你怎样唤醒一个阻塞的线程?
这是个关于线程和阻塞的棘手的问题,它有很多解决方法。如果线程遇到了IO阻塞,我并且不认为有一种方法可以中止线程。如果线程因为调用wait()、sleep()、或者join()方法而导致的阻塞,你可以中断线程,并且通过抛出InterruptedException来唤醒它。我之前写的《How to deal with blocking methods in java》有很多关于处理线程阻塞的信息。
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) 为什么使用Executor框架比使用应用创建和管理线程好?
10) 在Java中Executor和Executors的区别?
11) 如何在Windows和Linux上查找哪个线程使用的CPU时间最长?
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具当前位置浏览文章
访中,我们通常会遇到两个主题: java采集问题 和多线程面试问题。多线程是关于并发和线程的。这是很好的准备,所以不要离开这个话题。我们正在共享重要的java多线程面试问题和答案。Q1。什么是线程?线程是一个轻量级的子进程。线程类属于java.lang包.Threads有自己的stack.It是一种利使用机器中可使用的多个cpu的方式。例如,假如一个线程需要50毫秒的时间来完成任务,那么能用10个线程将该任务减少到5毫秒。Q2 Thread和Process之间有什么区别?一个进程能有很多线程。线程能执行进程的任何部分。Process的同一部分能由多个线程执行。进程有自己的地址,而Thread共享创立它的进程的地址空间。线程在进程中有自己的堆栈,所有线程共享一个常见的系统资源,如堆内存。Q3在java中实现Thread的方法是什么?在java中实现Thread有两种方法。1.通过在java中实现Runnable接口,而后从中创立Thread对象。2.通过扩展Thread类。Q4在Java中创立线程时实现Runnable和扩展Thread之间有什么区别?哪一个更好?实施Runnable更好。当我们实现Runnable接口时,我们能扩展任何其余类,但是假如我们扩展了Thread类,我们不可以扩展任何其余类,由于java不允许多重继承。您能在这里找到实现Runnable和扩展Thread之间的区别的详细答案 。Q5线程的生命周期是什么?当我们在java程序中创立一个Thread实例时,它的状态是新的。而后我们启动Thread,而后将状态更改为Runnable(准备运行但尚未运行)。执行Threads取决于ThreadScheduler。ThreadScheduler负责将CPU分配给Runnable线程池中的线程,并将其状态更改为Running.Waiting,Blocked和Dead是Thread的剩余状态。所以总而言之 , 一个线程能在的新的,可运行的,运行的,等待的,被阻止的和死的。Q6在java中sleep和wait方法有什么区别?Wait方法释放锁,而sleep方法不释放锁。Wait方法属于java.lang.Object类,而sleep方法属于java.lang.Thread类。你能在java中找到wait和sleep方法之间的详细答案 。Q7用start()方法和run()方法启动线程有什么区别?这个问题有点辣手,也可可以会混淆你。答案是当你调使用start()方法时,main方法在内部调使用run()方法来启动新创立的Thread,所以run方法最终被新创立的Thread调使用。当你调使用run()方法时,它调使用在同一个线程中,当你调使用start()方法时,不会启动新的线程。Q8使用户线程和守护进程线程有什么区别?当我们在java程序中创立一个线程时,它被称为使用户线程。假如一个线程启动,我们不可以用户线程守护线程。守护进程线程是低优先级的线程,为使用户线程提供后端支持。它向使用户线程提供服务。从守护线程创立的子线程也是一个守护进程线程。Q9如何在java中创立守护进程?通过设置setDaemon(true),我们能在java中创立一个守护进程线程。Q10用volatile关键字有什么意义?当我们做一个变量volatile时,所有的线程直接从内存中读取它的值,而不是缓存它。这确保共享变量始终升级。volatile是一个只可以与变量一起用的关键字。Q11有可可以两次启动一个线程吗?不,没有可可以启动一个线程两次。假如我们这样做,那么它会抛出异常。Q12什么是同步?同步是控制多个线程访问任何共享资源的功可以。同步的主要优点是一个。以避免一致性问题湾 避免线程干扰Q13哪个更优选 - 同步块或者同步方法?同步块是更优选的方式,由于它在锁定对象时不锁定对象。同步方法将在类中中止多个同步块,即便它们与执行无关,并将其置于等待状态以获取对象上的锁定。Q14睡眠与产量方法的差异和类似之处?假如另一个线程中断休眠的线程,而yield方法不会引发中断的异常,Sleep方法会抛出中断的异常。Thread.sleep()方法不会导致当前正在执行的线程放弃监视器,而yield方法放弃监视器。你能在java中找到sleep和yield方法的区别的详细解释 。Q15什么是僵局?死锁是两个线程正在等待释放资源所持有的锁的情况。例如线程1:锁定资源A,等待资源B线程2:锁定资源B,等待资源AQ16写一个程序在java中创立一个死锁?您能在这里找到答案 在Java中创立一个死锁程序 。Q17你应该采取什么措施来避免僵局?1.锁定类的特定成员变量,而不是锁定整个类。2.假如可可以,尝试用join()方法尝试用join方法,虽然它可可以会阻止我们充分利使用多线程环境,由于线程将依次开始和结束,但它能方便地避免死锁。3.假如可可以,尝试避免嵌套同步块。Q18你如何了解Thread的优先级?每个线程都有优先级。其值为int ,取值范围为 1?10,其中1为最低优先级,10为优先级。通常较高优先级线程在执行中取得较高优先级,但这取决于依赖于操作系统的ThreadScheduler实现。我们能指定线程的优先级,但不可以保证较高优先级的线程在低优先级线程之前被执行。Q19类锁和对象锁之间有什么区别?线程能通过输入synchronized方法来获取对象锁.Threads能通过输入静态同步方法获取类的类对象的锁定。类的多个对象可可以存在,并且每个对象都有自己的锁。在类锁定中,类的多个对象可可以存在,但总是有一个类的类对象锁可使用。Q20 Callable和Runnable有什么区别?可调使用throws检查异常,而Runnable不抛出检查异常。Runnable的返回类型为void,它不返回任何值,而Callable能返回Future对象。您能找到可调使用和可运行的区别的详细说明 。Q21时间片和抢占式调度有什么区别?在抢占式调度中,执行较高优先级的任务,直到它进入等待或者死状态或者更高优先级的任务出现。在时间切片中,任务运行预约义的时间片段,而后重新进入就绪任务池。Q22能同步一个构造函数吗?否,构造函数无法同步。Q23 java中的种族条件是什么,我们如何处理?当多个线程尝试在没有同步的情况下访问同一资源时会导致竞争条件。我们能通过用同步块或者同步方法来处理竞争条件。Q24线程如何相互通信?线程能用wait(),notify(),notifyAll()方法相互通信。Q25为什么wait(),notify()和notifyAll()方法必需从同步上下文调使用?当一个线程在任何Object上调使用wait()时,它必需在Object上具备将要离开的监视器,并进入等待状态,直到任何其余线程在此Object上调使用notify()。相似地,当一个线程在任何Object上调使用notify()时,它将使对象上的监视器等待,并且其余等待的线程能获取对象上的监视器。由于所有这些线程都需要线程来拥有一个对象监视器,这只可以通过同步来实现。这就是为什么必需从同步上下文中调使用wait(),notify()和notifyAll()方法的起因。Q26什么是Java中的ThreadLocal变量?ThreadLocal可使用于创立ThreadLocal变量。我们知道一个Object的所有线程都共享它的变量。假如变量不是线程安全的,那么我们能用同步。假如我们想避免同步,那么我们能用ThreadLocal变量。每个线程都有自己的ThreadLocal变量,它们能用它的get()和set()方法来获取默认值或者将其值本地更改为Thread。Q27什么是Threadpool?Threadpool管理工作线程池。有一个队列,其中任务正在等待执行。Q28你可以发现线程能否在对象上保持lock()?holdLock(Object)方法可使用于确定当前线程能否保持指定对象的监视器上的锁定。假如线程持有指定对象的锁定或者监视器,则“保持”(Object)的方法返回true。}

我要回帖

更多关于 多线程编程题目 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信