【创作赢红包】进线程有关的面试题

简介: 【创作赢红包】进线程有关的面试题

一,简述 wait 和 sleep 有什么区别?

  1. sleep是线程类(Thread)的方法;wait是Object类的方法
  2. sleep是使线程休眠,不会释放对象锁;wait是使线程等待,释放锁
  3. sleep()方法导致了程序暂停(线程进入睡眠状态),但是他的监控状态依然保持着,当指定的时间到了又会自动恢复到 可运行状态。在调用sleep()方法的过程中,线程不会释放对象锁。
  4. wait是让自己暂时等待,放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。
  5. 调用sleep进入阻塞状态;调用wait进入就绪状态

二,请描述 volatile 关键字的作用

  1. 线程的可见性:当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值。
  2. 顺序一致性:禁止指令重排序。

三,sleep()方法和wait()方法区别

共同点:都是使线程暂停一段时间的方法。

不同点:①原理不同-sleep()是属于Thread类中的,而wait()方法,则是属于Object类中的。

②锁处理机制不同-sleep()最主要作用使线程暂停执行一段时间,时间一到自动恢复,不涉及线程通讯,因此,调用sleep()方法并不会释放锁。而当调用wait()方法的时候,线程会释放它所占的锁,进入等待此对象的等待锁定池,只有针对此对象调用notify()方法后本线程才进入对象锁定池准备获取对象锁进入运行状态。

③使用区域不同-wait()方法必须放在同步代码块或者同步方法中使用,sleep()可以用在任何地方

四,简述线程池有什么优点?

1、重用存在的线程,减少对象创建销毁的开销。

2、可有效的控制最大并发线程数,提高系统资源的使用率,同时避免过多资源竞

争,避免堵塞。

3、提供定时执行、定期执行、单线程、并发数控制等功能。

五、非常重要的面试题:谈谈进程和线程之间的区别![高频]―谈到操作系统,进程线程的概念和区别,就是出场频率最高的问题(没有之一)

1.进程包含线程

2.线程比进程更轻量,创建更快,销毁也更快

3.同一个进程的多个线程之间共用同一份内存/文件资源.进程和进程之间,则是独立的内存/文件资源

4.进程是资源分配的基本单位,线程是调度执行的基本单位

六、工作目录:

1.如果是通过命令行来执行程序,此时当前命令所在的目录就是工作目录~~

2.如果你使用IDEA来执行执行Java程序,这个时候你的工作目录是IDEA打开的项目的目录

3.如果你使用的是Tomcat 来运行一个war包,你的工作目录就是Tomcat的 bin目录~

七、程序和进程的本质区别是;

   “静态”意味着程序是永久存在的,“动态”表现为进程是一个暂时的过程,可以创建也可以撤销。在进程的一个生存周期中,具有运行、就绪和等待3种可能的状态。 程序和进程也是紧密相关的:进程由程序、数据和进程控制快(PCB)3部分组成,显然如果没有程序,也就没有进程。








目录
相关文章
|
12月前
|
监控 Kubernetes Java
阿里面试:5000qps访问一个500ms的接口,如何设计线程池的核心线程数、最大线程数? 需要多少台机器?
本文由40岁老架构师尼恩撰写,针对一线互联网企业的高频面试题“如何确定系统的最佳线程数”进行系统化梳理。文章详细介绍了线程池设计的三个核心步骤:理论预估、压测验证和监控调整,并结合实际案例(5000qps、500ms响应时间、4核8G机器)给出具体参数设置建议。此外,还提供了《尼恩Java面试宝典PDF》等资源,帮助读者提升技术能力,顺利通过大厂面试。关注【技术自由圈】公众号,回复“领电子书”获取更多学习资料。
|
11月前
|
数据采集 Java Linux
面试大神教你:如何巧妙回答线程优先级这个经典考题?
大家好,我是小米。本文通过故事讲解Java面试中常见的线程优先级问题。小明和小华的故事帮助理解线程优先级:高优先级线程更可能被调度执行,但并非越高越好。实际开发需权衡业务需求,合理设置优先级。掌握线程优先级不仅能写出高效代码,还能在面试中脱颖而出。最后,小张因深入分析成功拿下Offer。希望这篇文章能助你在面试中游刃有余!
214 4
面试大神教你:如何巧妙回答线程优先级这个经典考题?
|
11月前
|
Java 程序员 开发者
Java社招面试题:一个线程运行时发生异常会怎样?
大家好,我是小米。今天分享一个经典的 Java 面试题:线程运行时发生异常,程序会怎样处理?此问题考察 Java 线程和异常处理机制的理解。线程发生异常,默认会导致线程终止,但可以通过 try-catch 捕获并处理,避免影响其他线程。未捕获的异常可通过 Thread.UncaughtExceptionHandler 处理。线程池中的异常会被自动处理,不影响任务执行。希望这篇文章能帮助你深入理解 Java 线程异常处理机制,为面试做好准备。如果你觉得有帮助,欢迎收藏、转发!
682 14
|
11月前
|
缓存 安全 Java
面试中的难题:线程异步执行后如何共享数据?
本文通过一个面试故事,详细讲解了Java中线程内部开启异步操作后如何安全地共享数据。介绍了异步操作的基本概念及常见实现方式(如CompletableFuture、ExecutorService),并重点探讨了volatile关键字、CountDownLatch和CompletableFuture等工具在线程间数据共享中的应用,帮助读者理解线程安全和内存可见性问题。通过这些方法,可以有效解决多线程环境下的数据共享挑战,提升编程效率和代码健壮性。
379 6
|
12月前
|
算法 安全 Java
Java线程调度揭秘:从算法到策略,让你面试稳赢!
在社招面试中,关于线程调度和同步的相关问题常常让人感到棘手。今天,我们将深入解析Java中的线程调度算法、调度策略,探讨线程调度器、时间分片的工作原理,并带你了解常见的线程同步方法。让我们一起破解这些面试难题,提升你的Java并发编程技能!
484 16
|
安全 Java 程序员
面试直击:并发编程三要素+线程安全全攻略!
并发编程三要素为原子性、可见性和有序性,确保多线程操作的一致性和安全性。Java 中通过 `synchronized`、`Lock`、`volatile`、原子类和线程安全集合等机制保障线程安全。掌握这些概念和工具,能有效解决并发问题,编写高效稳定的多线程程序。
339 11
|
Java Linux 调度
硬核揭秘:线程与进程的底层原理,面试高分必备!
嘿,大家好!我是小米,29岁的技术爱好者。今天来聊聊线程和进程的区别。进程是操作系统中运行的程序实例,有独立内存空间;线程是进程内的最小执行单元,共享内存。创建进程开销大但更安全,线程轻量高效但易引发数据竞争。面试时可强调:进程是资源分配单位,线程是CPU调度单位。根据不同场景选择合适的并发模型,如高并发用线程池。希望这篇文章能帮你更好地理解并回答面试中的相关问题,祝你早日拿下心仪的offer!
311 6
|
缓存 安全 算法
Java 多线程 面试题
Java 多线程 相关基础面试题
215 2
|
存储 缓存 安全
【Java面试题汇总】多线程、JUC、锁篇(2023版)
线程和进程的区别、CAS的ABA问题、AQS、哪些地方使用了CAS、怎么保证线程安全、线程同步方式、synchronized的用法及原理、Lock、volatile、线程的六个状态、ThreadLocal、线程通信方式、创建方式、两种创建线程池的方法、线程池设置合适的线程数、线程安全的集合?ConcurrentHashMap、JUC
【Java面试题汇总】多线程、JUC、锁篇(2023版)
|
消息中间件 前端开发 NoSQL
面试官:线程池遇到未处理的异常会崩溃吗?
面试官:线程池遇到未处理的异常会崩溃吗?
227 3
面试官:线程池遇到未处理的异常会崩溃吗?

热门文章

最新文章