看我并发编程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()方法获取计算的结果。

由于篇幅有限,这里就不一一罗列了,可以看文末~

还有更多资料分享如下

【转载】参数估计(Parameter Estimation):频率学派(最大似然估计MLE、最大后验估计MAP)与贝叶斯学派(贝叶斯估计BPE) 基础 频率学派与贝叶斯学派 http://www.douban.com/group/topic/16719644/ http://www.zhihu.com/question/20587681 最大似然估计(Maximum likelihood estimation,MLE) http://baike.baidu.com/view/1918804.htm http://baike.baidu.co 阅读详情

相关推荐

Facebook登录协议逆向实战:从加密参数到完整流程解析(附Python代码)

本文深入解析Facebook登录协议的逆向工程,重点拆解`lgndim`和`encpass`等加密参数的生成逻辑,并提供完整的Python实现代码。通过Base64解码和RSA加密技术,帮助开发者理解并实现Facebook登录流程,同时涵盖工程优化与安全实践。

weixin_30687051的博客 478

Java笔试面试题AI答之线程(19)

Java中的并发和并行是两种不同的任务执行方式,分别适用于不同的场景和需求。在单核处理器上,主要通过并发来提升性能;而在多核处理器上,则可以通过并行来进一步提高程序的执行效率。了解并发和并行的区别,有助于更好地设计和实现高效的Java程序。线程组(ThreadGroup)是Java中用于管理线程的一个类,即类。在Java中,每一个线程都归属于某个线程组,这个线程组负责管理其内的线程。

学无止境,止于至善 903

保姆级教程:在Ubuntu 22.04上,用Chroot和xorriso定制你的专属服务器镜像(附离线包集成)

本文提供了一份详细的Ubuntu 22.04离线镜像定制教程,通过Chroot环境和xorriso工具,帮助用户打造专属服务器镜像。教程涵盖环境准备、镜像解构、系统定制、镜像重组与验证等全流程,特别适合需要在隔离网络环境中批量部署服务器的场景。

weixin_28704565的博客 446

一文搞定Java并发编程面试考点

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33979745的博客 4114

GAMES101:MacOS作业环境搭建

查看gcc/clang的位置产看gcc/clang的版本1.1.2 安装cmake。

weixin_38844255的博客 717

1.14、基于NARX神经网络的磁悬浮建模(matlab)

数据准备:首先,需要准备用于训练和测试的磁悬浮系统的输入和输出数据,包括磁力、电流、位置、速度等信息。数据可以被保存在MATLAB的数据文件中,并加载到工作空间中。使用MATLAB的神经网络工具箱,创建一个NARX神经网络。需要定义网络的层次结构、节点数、激活函数等参数。通常,NARX网络包括自回归层和外部输入层。数据预处理:对加载的数据进行预处理,包括去除噪声、归一化处理等操作,以确保数据质量和网络训练的稳定性。使用MATLAB的训练函数,如trainlm或者trainbr,对NARX神经网络进行训练。

XU157303764的博客 1999

2022年Java秋招面试必看的|Java并发编程面试题

为一名专业的 Java 开发者,如何在并发场景中写出优良的代码,是一道绕不开的坎,也是考量一个 Java 开发者功底的关键技术。因此,不难发现 Java 并发问题一直是各个大厂面试的重点之一。

QLCZ0809的博客 378

软考高级-系统架构设计师 知识点整理 (一篇就够了 建议收藏)

软考高级-系统架构设计师知识点整理---十万字总结,助你通过高级

片言可决讼,半纸能缚龙 7356

稳了!Java并发编程面试题及答案

1、在java中守护线程和本地线程区别? java中的线程分为两种:守护线程(Daemon)和用户线程(User)。 任何线程都可以设置为守护线程和用户线程,通过方法Thread.setDaemon(bool on);true则把该线程设置为守护线程,反之则为用户线程。Thread.setDaemon()必须在Thread.start()之前调用,否则运行时会抛出异常。 两者的区别: 虚拟...

DRR压缩文件 DRR文件如何打开 188

Serial RapidIO Gen2 IP 说明(三)

前言 继续接着上篇文章,介绍Serial RapidIO Gen2 IP 的具体端口信息。 一、端口描述 1、缓冲设计接口 2、物理层接口 参考说明 【1】Serial RapidIO Gen2 v4.1https://china.xilinx.com/content/dam/xilinx/support/documentation/ip_documentation/srio_gen2/v4_1/pg007_srio_gen2.pdf ...

记录所学,分享知识,结识挚友 1322

Python对象的基本组成和内存示意图及引用的本质

在Python中,变量也称为:对象的引用(reference)。变量存储的就是对象的地址。变量不需要显式声明类型。根据变量引用的对象,Python解释器自动确定数据类型。一个内存块,拥有特定的值,支持特定类型的相关操作。变量位于:栈内存(压栈出栈等细节,后续再介绍)。⚠️Python是动态类型语言。变量通过地址引用了“对象”。

Calor13的博客 557

RTC时间不准?内置晶振与外置晶振选型与调试全解析

晶振是电子设备中产生稳定时钟频率的核心器件,其精度直接决定RTC实时时钟的走时准确性。时钟电路的设计则涉及负载电容匹配、温漂特性与起振时间等关键原理,这些参数共同影响系统的功耗与可靠性。在实际工程中,合理选择内置晶振或外置晶振方案,不仅关系到产品的时间精度,还影响低功耗唤醒逻辑与整机待机电流。对于智能表计、物联网节点和车载电子等需要长期可靠走时的应用,掌握时钟电路的调试方法尤为重要。当RTC出现时间跑偏或丢失时,可通过示波器测量晶振波形、检查电源切换瞬态以及验证I2C通信时序来快速定位根因。本文围绕RTC实

weixin_33826609的博客 746

mapbox进阶,dem数据转为等高面,加载转换后的等高面到地图

本文详细介绍如何基于mapbox-gl v3.*.* 版本,使用dem数据转为等高面,加载转换后的等高面到地图,亲测可用。希望能帮助到您。一起学习,加油!加油!

我哎GIS博客 407

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

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

你我皆为凡人的博客 2140

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

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

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

weixin_42101384的博客 216

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

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

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

weixin_39583029的博客 1086

蓝牙模块HM-10手册

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

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

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

weixin_39620273的博客 992

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

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

weixin_36422176的博客 2460

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
上一篇: Spring复习大纲:依赖注入Ioc+Beans+注解+数据访问+AOP+MVC等
下一篇: 处理接口幂等性的两种常见方案
Java技术那些事儿
博客等级 码龄5年 2306粉丝 2584原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值