看我并发编程72变,掌握了这72道题(含详细解析),你还怕啥呢?

榨书系列之一:管理篇——技术人修炼之道:从程序员到百万高管的72项技能 然后被提拔到管理岗后,做好团队的管理和产出,更高level(或老板视角)去看到多个团队的协作,承担,打硬仗,打胜仗,兑现更大的价值,为上级的产出贡献自己(团队)的产出。除了对服务功能的不断完善和专业化,也需要做内部的营销,让更多的前端应用知道和了解该服务的能力。小到每次代码评审,大到系统整体方案评审,都要尽量参与,尤其是大型系统整体架构评审,这是系统化提升技术判断力最好的机会,通过架构师的讲解,包括架构设计的逻辑、每种技术的特性等,再结合自己的理解和经验给团队提供反馈,架构判断能力也可以得到提升。 阅读详情

1.Java中守护线程和本地线程区别

2.线程与进程的区别

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

4.死锁与活锁的区别,死锁与饥饿的区别

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

6.什么是线程组,为什么在Java中不推荐使用

7.为什么使用Executor框架

8.在Java中Executor和Executors的区别

9.什么是原子操作,在Java Concurrency API中有哪些原子类(atomic classes)

10.Java Concurrency API中的Lock接口(Lock interface)是什么,对比同步它有什么优势

11.什么是Executors框架

12.什么是阻塞队列,阻塞队列的实现原理是什么,如何使用阻塞队列来实现生产者

13.什么是Callable和Future

14.什么是FutureTask,使用ExecutorService启动任务

15.什么是并发容器的实现

16.多线程同步和互斥有几种实现方法,都是什么

17.什么是竞争条件?你怎样发现和解决竞争

18.如何使用thread dump,如何分析Thread dump

19.为什么我们调用start()方法时会执行run()方法,为什么我们不能直接调用run()方法

20.Java中你怎样唤醒一个阻塞的线程

21.在Java中CycliBarriar和CountdownLatch有什么区别

22.什么是不可变对象,它对写并发应用有什么帮助

23.Java中用到的线程调度算法是什么

24.什么是线程组,为什么在Java中不推荐使用

25.为什么使用Executor框架比使用应用创建和管理线程好

26.Java中有几种方法可以实现一个线程

27.如何停止一个正在运行的线程

28.notify()和notifyAll()有什么区别

29.什么是Daemon线程,它有什么意义

30.Java如何实现多线程之间的通讯和协作

31.什么是可重入锁(ReentrantLock)

32.当一个线程进入某个对象的一个synchronized的实例方法后,其它线程是否可进入此对象的****其它方法

33.乐观锁和悲观锁的理解及如何实现,有哪些实现方式

34.SynchronizedMap和ConcurrentHashMap有什么区别

35.CopyOnWriteArrayList可以用于什么应用场景

36.什么叫线程安全,servlet是线程安全吗

37.volatile有什么用,能否用一句话说明下volatile的应用场景

38.为什么代码会重排序

39.在java中wait和sleep方法的不同

40.一个线程运行时发生异常会怎样

41.如何在两个线程间共享数据

42.Java中notify 和 notifyAll有什么区别

43.为什么wait, notify 和 notifyAll这些方法不在thread类里面

44.什么是ThreadLocal变量

45.Java中interrupted 和 isInterrupted方法的区别

46.为什么wait和notify方法要在同步块中调用

47.为什么你应该在循环中检查等待条件

48.Java中的同步集合与并发集合有什么区别

49.什么是线程池,为什么要使用它

50.怎么检测一个线程是否拥有锁

51.你如何在Java中获取线程堆栈

52.JVM中哪个参数是用来控制线程的栈堆栈小的

53.Thread类中的yield方法有什么作用

54.Java中ConcurrentHashMap的并发度是什么

55.Java中Semaphore是什么

56.Java线程池中submit() 和 execute()方法有什么区别

57.什么是阻塞式方法

58.Java中的ReadWriteLock是什么、

59.volatile 变量和 atomic 变量有什么不同

60.可以直接调用Thread类的run ()方法么

61.如何让正在运行的线程暂停一段时间

62.你对线程优先级的理解是什么

63.什么是线程调度器(Thread Scheduler)和时间分片(Time Slicing )

64.你如何确保main()方法所在的线程是Java 程序最后结束的线程

65.线程之间是如何通信的

66.为什么线程通信的方法wait(), notify()和notifyAll()被定义在Object 类里

67.为什么wait(), notify()和notifyAll ()必须在同步方法或者同步块中被调用

68.为什么Thread类的sleep()和yield ()方法是静态的

69.如何确保线程安全

70.同步方法和同步块,哪个是更好的选择

71.如何创建守护线程

72.什么是Java Timer 类,如何创建一个有特定时间间隔的任务

1.Java中守护线程和本地线程区别

java中的线程分为两种:守护线程(Daemon)和用户线程(User)。

任何线程都可以设置为守护线程和用户线程,通过方法Thread.setDaemon(bool on);true则把该线程设置为守护线程,反之则为用户线程。Thread.setDaemon()必须在Thread.start()之前调用,否则运行时会抛出异常。

两者的区别:

唯一的区别是判断虚拟机(JVM)何时离开,Daemon是为其他线程提供服务,如果全部的User Thread已经撤离,Daemon 没有可服务的线程,JVM撤离。也可以理解为守护线程是JVM自动创建的线程(但不一定),用户线程是程序创建的线程;比如JVM的垃圾回收线程是一个守护线程,当所有线程已经撤离,不再产生垃圾,守护线程自然就没事可干了,当垃圾回收线程是Java虚拟机上仅剩的线程时,Java虚拟机会自动离开。

扩展:Thread Dump打印出来的线程信息,含有daemon字样的线程即为守护进程,可能会有:服务守护进程、编译守护进程、windows下的监听Ctrl+break的守护进程、Finalizer守护进程、引用处理守护进程、GC守护进程。

2.线程与进程的区别

进程是操作系统分配资源的最小单元,线程是操作系统调度的最小单元。

一个程序至少有一个进程,一个进程至少有一个线程。

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

多线程会共同使用一组计算机上的CPU,而线程数大于给程序分配的CPU数量时,为了让各个线程都有执行的机会,就需要轮转使用CPU。不同的线程切换使用CPU发生的切换数据等就是上下文切换。

4.死锁与活锁的区别,死锁与饥饿的区别

死锁:是指两个或两个以上的进程(或线程)在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。

产生死锁的必要条件:

1. 互斥条件:所谓互斥就是进程在某一时间内独占资源。

2. 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。

3. 不剥夺条件:进程已获得资源,在末使用完之前,不能强行剥夺。

4. 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。

活锁:任务或者执行者没有被阻塞,由于某些条件没有满足,导致一直重复尝试,失败,尝试,失败。

活锁和死锁的区别在于,处于活锁的实体是在不断的改变状态,所谓的“活”, 而处于死锁的实体表现为等待;活锁有可能自行解开,死锁则不能。

饥饿:一个或者多个线程因为种种原因无法获得所需要的资源,导致一直无法执行的状态。

Java中导致饥饿的原因:

  • 高优先级线程吞噬所有的低优先级线程的CPU时间。

  • 线程被永久堵塞在一个等待进入同步块的状态,因为其他线程总是能在它之前持续地对该同步块进行访问。

  • 线程在等待一个本身也处于永久等待完成的对象(比如调用这个对象的wait方法),因为其他线程总是被持续地获得唤醒。

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

采用时间片轮转的方式。可以设置线程的优先级,会映射到下层的系统上面的优先级上,如非特别需要,尽量不要用,防止线程饥饿。

6.什么是线程组,为什么在Java中不推荐使用

ThreadGroup类,可以把线程归属到某一个线程组中,线程组中可以有线程对象,也可以有线程组,组中还可以有线程,这样的组织结构有点类似于树的形式。

为什么不推荐使用?因为使用有很多的安全隐患吧,没有具体追究,如果需要使用,推荐使用线程池。

7.为什么使用Executor框架

每次执行任务创建线程 new Thread()比较消耗性能,创建一个线程是比较耗时、耗资源的。

调用 new Thread()创建的线程缺乏管理,被称为野线程,而且可以无限制的创建,线程之间的相互竞争会导致过多占用系统资源而导致系统瘫痪,还有线程之间的频繁交替也会消耗很多系统资源。

接使用new Thread() 启动的线程不利于扩展,比如定时执行、定期执行、定时定期执行、线程中断等都不便实现。

8.在Java中Executor和Executors的区别

Executors 工具类的不同方法按照我们的需求创建了不同的线程池,来满足业务的需求。

Executor 接口对象能执行我们的线程任务。

ExecutorService接口继承了Executor接口并进行了扩展,提供了更多的方法我们能获得任务执行的状态并且可以获取任务的返回值。

使用ThreadPoolExecutor 可以创建自定义线程池。

Future 表示异步计算的结果,他提供了检查计算是否完成的方法,以等待计算的完成,并可以使用get()方法获取计算的结果。

由于篇幅有限,这里就不一一罗列了

**还有更多资料分享如下

Java并发编程进阶练习代码 java并发编程的联系代码,由低到高,包含线程安全、锁、线程通讯、线程池、Concurrent包内容的使用、各种阻塞队列的联系等知识。 立即下载

相关推荐

Java并发编程面试题--共87题

不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题。Java语言一个重要的特点就是内置了对并发的支持,让Java大受企业和程序员的欢迎。大多数待遇丰厚的Java开发职位都要求开发者精通多线程技术并且有丰富的Java程序开发、调试、优化经验,所以线程相关的问题在面试中经常会被提到。 注:本文档根据http://www.importnew.com/12773.html 和http://ifeve.com/java-multi-threading-concurrency-interview-questions-with-answers/ 这两个网站的并发编程试题集整理得到的文档,

并发编程44题(含答案)

1、并发编程三要素? 1)原子性 原子性指的是一个或者多个操作,要么全部执行并且在执行的过程中不被其他操作打断,要么就全部都不执行。 2)可见性 可见性指多个线程操作一个共享变量时,其中一个线程对变量进行修改后,其他线程可以立即看到修改的结果。 实现可见性的方法: synchronized或者Lock:保证同一个时刻只有一个线程获取锁执行代码,锁释放之前把最新的值刷新到主内存,实现可见...

weixin_42034166的博客 3633

2021秋招IC验证面经-ARM中国/中科芯/飞腾/地平线/中兴

中科芯 (央企福利待遇好,但是百分百不解决户口,适合当地人进去躺平。) 现场面试,三个面试官,时间大约40min 首先介绍一下自己,介绍一下项目。所做项目用到了FIFO吗,深度是多少,位宽是多少,仲裁算法是什么? 验证环境中的reference model是自己写的还是本身就有的,仲裁怎么在参考模型中实现,参考模型怎么获取寄存器的值? 怎么配置RTL寄存器,通过平台的寄存器模型进行寄存器配置,寄存器模型里边的方法,写一个寄存器或读一个寄存器怎么实现? 寄存器如何实现前门访问和后门访问,后门访问时

weixin_48014653的博客 6320

解密并发幕后黑手:线程切换引发的原子性问题

摘要:原子性是指一个或者多个操作在CPU中执行的过程不被中断的特性。原子性操作一旦开始运行,就会一直到运行结束为止,中间不会有中断的情况发生。

华为云官方博客 1万+

基于LightGBM和多模型融合的量化交易研究:沪深300为例【附代码】

📊 数据科学与大数据专业 | 数据分析与模型构建 | 数据驱动决策✨ 专业领域:数据挖掘与清洗大数据处理与存储技术机器学习与深度学习模型数据可视化与报告生成分布式计算与云计算数据安全与隐私保护💡 擅长工具:Python/R/Matlab 数据分析与建模Hadoop/Spark 大数据处理平台SQL数据库管理与优化Tableau/Power BI 数据可视化工具TensorFlow/PyTorch 深度学习框架✅数据科学与大数据技术毕业论文【数据】

lagougongzuoshi的博客 1671

FPGA控制DDR读写(AXI4总线接口)

FPGA控制DDR读写

qq_42712308的博客 1万+

笔试编程题---多线程并发

创建两个线程,线程1打印奇数,线程2打印偶数,要求按顺序打印1-100。

jkxer的博客 923

GAMES101作业3-遇到的各种问题及解决方法

记录在做作业3时遇到的一些坑!以及最后的解决办法。

qq_41835314的博客 6819

[百战成神7]C语言之凡人暴刷小牛【超详细解析,掌握每道题】

剖析牛客编程题,让新手更加能够战胜对编程的恐惧,和凡人一起来解决这些题,刷爆牛客网上的题,现阶段是入门题,往后会开出新的专栏 ,一些复杂有难度的题,如果大家觉得凡人的文章还不错,值得观看收藏,希望大家一键三连,多多支持,有什么建议下方评论区留言,或者私信凡人,凡人一定听从意见,最后感谢大家观看!!!

你我皆为凡人的博客 2140

【推荐系统】推荐算法:冷启动-召回-粗排-精排-重排 解读

【推荐系统】推荐算法:冷启动-召回-粗排-精排-重排 解读

Danger的博客 3761

Python 爬虫进阶:爬取 APP 数据(Charles 抓包 + Requests)

本文详细介绍了APP数据爬取的完整技术方案。首先通过Charles抓包工具配置HTTPS代理和证书,解析APP通信协议;然后分析请求参数、反爬机制和动态签名生成规则;接着使用Python的Requests库实现模拟请求、分页爬取和数据存储;最后针对证书问题、Token失效等常见问题提供解决方案。文章强调抓包分析、参数逆向和请求模拟三大核心技术,同时提醒开发者需遵守法律法规,合理控制爬取频率。该方案适用于移动端数据采集场景,为无法直接获取网页数据的情况提供了有效解决方案。

2503_91057718的博客 2120

imap 解析正文图片_72道积分题 略详解析(1-20)

原文章为: 湖心亭看雪:这72道积分题目会积了,绝对是高高手~~ 系列:秋分乀:72道积分题 略详解析(21-30)秋分乀:72道积分题 略详解析(31-50) 秋分乀:72道积分题 略详解析(51-72) 这篇文章是笔者在做这72道积分题的一些笔记和总结。发表这个已得到原作者的授权。本作为学生,本就在学习,疏漏之处在所难免。有不妥之处还请指出。(好像有点太严肃了?) 解...

weixin_42101384的博客 216

大数据Alluxio面试题及参考答案

Alluxio 在大数据生态里的定位是作为数据编排层,能在不同计算框架和存储系统之间起到桥梁的作用。它的核心功能在于加速数据访问,让大数据应用能够更高效地使用数据。Alluxio 把数据存储和数据处理分离开来,使计算框架可以在不考虑底层存储细节的情况下访问数据,这样就提高了系统的灵活性和可扩展性。Alluxio 和 HDFS 既存在关联又有区别。从关联方面来看,HDFS 是一种广泛使用的分布式文件系统,很多大数据应用都将其作为主要的数据存储系统。Alluxio 可以和 HDFS 集成,把 HDFS 当作底层

大模型大数据攻城狮的专栏 864

cos三次方积分_72道积分题 略详解析(31-50)

原文章:湖心亭看雪:这72道积分题目会积了,绝对是高高手~~ 系列:秋分乀:72道积分题 略详解析(1-20)秋分乀:72道积分题 略详解析(21-30)秋分乀:72道积分题 略详解析(51-72)正文31、 1)、设 则 且 注意到: ,所以: 2)、由: ,直接可得: 注:此为奇怪复合函数类型。如题27所言,直接设内层函数即可。如果可以一眼看出微分的话也可以像方...

weixin_39583029的博客 1086

深度测评:Accio Work——目前普通用户最友好的多 Agent 协同工具

摘要:Accio Work是阿里国际站推出的多Agent协同工具,通过借鉴古代"三省六部制"构建高效协作框架。该工具支持主流大模型,可配置专业Agent角色,实现40分钟内完成复杂产品PRD等高效协作。其亮点在于直观的UI设计和流程驱动机制,能强制各Agent从专业视角深度思考。虽然超长对话稳定性有待优化,但作为目前最用户友好的多Agent工具,显著降低了构建复杂AI团队的门槛,成为提升个人和小微企业生产力的利器。

Maynor的博客 1743

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

幂级数展开求积分_72道积分题 略详解析(51-72)

原文章:湖心亭看雪:这72道积分题目会积了,绝对是高高手~~系列:秋分乀:72道积分题 略详解析(1-20)秋分乀:72道积分题 略详解析(21-30)秋分乀:72道积分题 略详解析(31-50)正文51、 1)、分部积分法: 2)、设 则 接下来是一个简单的列表积分: (空格空格) 注:此题方法一当然也可以用列表积分法写出来。实际上方法一和方法二都是列表积分法,只不过 和...

weixin_39620273的博客 992

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

积分上下限无穷_72道积分题 略详解析(51-72)

原文章:湖心亭看雪:这72道积分题目会积了,绝对是高高手~~系列:秋分乀:72道积分题 略详解析(1-20)秋分乀:72道积分题 略详解析(21-30)秋分乀:72道积分题 略详解析(31-50)正文51、 1)、分部积分法: 2)、设 则 接下来是一个简单的列表积分: (空格空格) 注:此题方法一当然也可以用列表积分法写出来。实际上方法一和方法二都是列表积分法,只不过 和...

weixin_36422176的博客 2460

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

72道 并发编程 面试题!

你好,我是老田今天分享的是Java并发编程必备的72连环炮,希望通过这种连环炮的方式,让大家更好吸收知识点,同时也是面试中出现频率非常高。上帝视角 废话不多说,直奔主题。开始发炮 1、 什么是线程?线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速。比如,如果一个线程完成一个任务要100毫秒,...

田维常 334

Rust面试题及详细答案120道(72-80)-- 并发编程

Rust并发编程面试题解析 本文摘要:Rust的并发编程核心基于内存安全与无数据竞争原则,通过所有权机制在编译期保证线程安全。主要内容包括: 线程创建与等待(std::thread::spawn和join方法) 线程通信方式(所有权转移和Arc+Mutex共享) 同步原语对比(Arc与Rc的区别,Mutex与RwLock的适用场景) 通道通信机制(mpsc模块的使用流程) 死锁预防策略(锁顺序、超时机制等) 所有示例均展示Rust如何在编译期防止数据竞争,确保并发安全,适合准备Rust面试的开发者参考。

大剑师兰特的GIS世界 2164

72变创始人吴奇详解智能硬件工业4.0

伴随着互联网+概念的不断普及,智能硬件工业4.0这个词现在也非常火热,在刚刚结束的正和岛创新大集72变智能硬件专场上72变创始人吴奇就智能硬件工业4.0一词做出深度剖析。

2087

Java并发编程 72 变

1、 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速。比如,如果一个线程完成一个任务要100毫秒,那么用十个线程完成该任务只需10毫秒。 2、 线程和进程有什么区别? 一个进程是一个独立(self contained)的运行环境,它可以被看作一个程序或者一个应用。而线程是在进程中执行的一个任务。线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任务。不同的进程使用不

窦再兴的博客 208

吐血总结 | Java并发编程 72 变

关注“Java后端技术全栈”回复“000”获取大量电子书大家好,面试连环炮系列,继续走起,今天给大家分享的Java并发编程面试连环炮。我写公众号的宗旨是:希望能给你带来技术上或认识上有所帮...

田维常 177

【动态规划基础专题刷题】每道题均有完整详细题目描述、多组示例(附解释)、清晰解题思路、带注释Java代码、复杂度分析

本文介绍了三道动态规划高阶题目:LeetCode 312(戳气球)、337(打家劫舍 III)和698(划分为k个相等子集)。312题采用区间DP方法,通过逆序思考枚举最后戳破的气球,时间复杂度O(n³)。337题使用树形DP结合后序遍历,每个节点返回偷与不偷两种状态,时间复杂度O(n)。698题(摘要未展开)涉及回溯剪枝,目标是将数组划分为k个和相等的子集。每道题均包含详细题目描述、示例、解题思路、带注释的Java代码实现及复杂度分析。

独立思考,明辨是非 1199

从入门到放弃?我用Python SymPy库5分钟验证了这72道高数积分题

本文介绍了如何使用Python的SymPy库快速验证高等数学中的积分题,展示了其在符号计算、批量处理和教学辅助中的强大功能。通过实际案例和代码示例,帮助读者在5分钟内完成72道积分题的验证,显著提升学习效率。

weixin_31220401的博客 248
上一篇: 金三银四要来了,《Java权威面试指南(阿里版)》赶紧刷起来!
下一篇: java技术提升宝典,备战金三银四
Java技术那些事儿
博客等级 码龄5年 2306粉丝 2584原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值